Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

249
Views
Subir video a amazon s3 usando django y python

Todo lo que intento es subir un video a Amazon S3 en lugar de guardarlo en los medios como lo hace Django regularmente. Así que creó un modelo a continuación

 def upload_to_amazon_s3(instance, filename): aws_access_key_id = settings.AWS_ACCESS_KEY_ID aws_secret_access_key = settings.AWS_SECRET_ACCESS_KEY file_name = 'videos/{0}_{1}/{2}'.format(instance.user.id, instance.user.username, filename) conn = boto.connect_s3(aws_access_key_id, aws_secret_access_key) try: bucket = conn.get_bucket("ipitch_videos", validate=True) except S3ResponseError: bucket = conn.create_bucket('ipitch_videos') #Get the Key object of the bucket k = Key(bucket) #Crete a new key with id as the name of the file k.key=file_name #Upload the file result = k.set_contents_from_file(instance.video_file) # we need to make it public so it can be accessed publicly # using a URL like http://s3.amazonaws.com/bucket_name/key k.make_public() get_s3_obj = Key(bucket,file_name) endpoint_url = get_s3_obj.generate_url(expires_in=0, query_auth=False) return endpoint_url class Video(DateTimeModel): user = models.ForeignKey(User, on_delete=models.CASCADE) name = models.CharField(max_length=255) video_file = models.FileField(upload_to=upload_to_amazon_s3)

Obtengo el valor endpoint_url de Amazon s3 Url, por ejemplo, como https://ipitch_videos.s3.amazonaws.com/videos/1_username/super.mpg

Entonces, cuando subo un video desde el formulario frontal o una API con todos los campos user, name, video_file , se crea un registro en la base de datos con éxito, pero ocurren los siguientes tres problemas

  1. La instancia de grabación de video se guarda pero se divide / después de https:// de endpoint_url que proviene de Amazon y usa solo https:/ en lugar de https:// como se muestra a continuación

ingrese la descripción de la imagen aquí

  1. Junto con el proceso de carga de Amazon, también se creó un archivo de video localmente con la ruta que proviene de endpoint_url como, por ejemplo, si la URL del punto final es https://ipitch_videos.s3.amazonaws.com/videos/1_username/super.mpg django está creando las siguientes carpetas en medios como se muestra a continuación

ingrese la descripción de la imagen aquí

Entonces, ¿cómo evitar que Django cree archivos de video localmente también?

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puede usar S3BotoStorage.

$ pip install django-storages boto Agregue 'almacenamiento' a INSTALLED_APPS:

 INSTALLED_APPS = ( ..., 'storages', )

agregando otra clase de almacenamiento:

 class MediaStorage(S3BotoStorage): location = settings.MEDIAFILES_LOCATION

y en ajustes.py:

 MEDIAFILES_LOCATION = 'media' MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, MEDIAFILES_LOCATION) DEFAULT_FILE_STORAGE = 'custom_storages.MediaStorage'
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!