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

377
Views
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?

about 4 years ago · Santiago Trujillo
1 answers
Answer question

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

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!