Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

251
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda