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

311
Views
Python matraz ajax guarda la imagen base64 decodificada en el servidor temporalmente

Estoy cambiando el tamaño de las imágenes del lado del cliente antes de enviarlas a mi aplicación de matraz.

La imagen redimensionada, que se dibuja en un lienzo para cambiar el tamaño, se envía a través de una solicitud POST.

En mi aplicación, la imagen se decodifica a través de base64:

 def resize_image(item): content = item.split(';')[1] image_encoded = content.split(',')[1] body = base64.decodestring(image_encoded.encode('utf-8')) return body

Los datos de la imagen se almacenan como type String en la variable del body . Puedo guardar los datos en mi máquina local y funciona:

 filename = 'some_image.jpg' with open(filename, 'wb') as f: print "written" f.write(body)

Lo que necesito es subir la imagen redimensionada a AWS3. En un punto, necesito read() el contenido de la imagen, pero hasta que la imagen se guarde en algún lugar como un archivo, sigue siendo una Cadena, por lo que falla:

 file_data = request.values['a'] imagedata = resize_image(file_data) s3 = boto.connect_s3(app.config['MY_AWS_ID'], app.config['MY_AWS_SECRET'], host='s3.eu-central-1.amazonaws.com') bucket_name = 'my_bucket' bucket = s3.get_bucket(bucket_name) k = Key(bucket) # fails here file_contents = imagedata.read() k.key = "my_images/" + "test.png" k.set_contents_from_string(file_contents)

A menos que haya otra solución, pensé en guardar la imagen temporalmente en mi servidor (Heroku) y subirla y luego eliminarla, ¿cómo funcionaría esto? ¡Eliminar después es importante aquí!

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

set_contents_from_string toma una cadena como parámetro, probablemente podría simplemente pasarle los datos de la cadena de imagen directamente para cargarlos en S3

Solución:

Eliminar esta parte:

 file_contents = imagedata.read()

Utilice imagedata directamente aquí:

 k.set_contents_from_string(imagedata)
about 4 years ago · Santiago Trujillo Report

0

Si necesita llamar a .read() en sus datos, pero no necesita guardar el archivo en el disco, use StringIO:

 import StringIO output = StringIO.StringIO() output.write('decoded image') output.seek(0) output.read() Out[1]: 'decoded image'
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!