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

386
Vistas
Cargue diferentes archivos con nombres de archivo idénticos usando boto3 y Django (y S3)

Estoy tratando de crear un servidor Django que almacene archivos multimedia en S3 donde los usuarios pueden cargar sus propios archivos que pueden tener el mismo nombre de archivo pero ser archivos diferentes. Configuré S3 y lo hice funcionar a través de comandos explícitos de Python como

 import boto3 s3 = boto3.resource('s3') s3.Object('my-bucket','text.txt').put(Body=open('/text.txt', 'rb'))

Estoy configurando mi modelo así:

 import boto3 s3 = boto3.resource('s3') class MyModel(models.Model): my_file = models.FileField() file_url = models.CharField(max_length=200, blank=True, null=True)

En mi views.py, mi formulario de carga es:

 import boto3 s3 = boto3.resource('s3') ... if form.is_valid(): # creates object from form but doesn't go into database mymodel = form.save(commit=False) uploaded_file = request.FILES['my_file'] s3.Object('my-bucket',uploaded_file.name).put(Body=request.FILES['uploaded_file']) mymodel.file_url = 'http://my-bucket.s3.amazonaws.com/' + uploaded_file.name;

Me gustaría que los usuarios carguen sus propios archivos que pueden tener el mismo nombre de archivo pero que sean archivos diferentes. Puedo imaginar generar una cadena md5 y luego agregarla al nombre del archivo, pero luego, cuando las personas vayan a descargar sus archivos, tendrán una cadena hash aleatoria agregada al final del archivo.

Supongo que hay una forma mejor y más elegante de hacer esto. ¿Alguien puede ayudar?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Si es posible, tendría un identificador único para el usuario y cargaría todos los archivos para ese usuario con el identificador adjunto a la URL como una carpeta. Un ejemplo sería si su depósito fuera mybucket y su identificador fuera el ID de usuario, su URL de carga sería ' http://my-bucket.s3.amazonaws.com/ ' + user.Id + '/' + uploaded_file.name . S3 no tiene una estructura de directorios, pero usa prefijos de nombre como una forma de facilitar la organización de sus archivos. A continuación se muestra un enlace a la documentación pertinente:

S3: trabajar con carpetas

over 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