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

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

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 Denunciar

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 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