2011-04-06 12 views
7

Estoy tratando de tomar datos de un StringIO (o cStringIO, más específicamente) y convertirlo a django.core.files.images.ImageFile.Convirtiendo un objeto StringIO a un Django ImageFile

Pero no funciona. De todos modos, quiero decir que falla de muchas maneras, y Google me ha fallado.

Hasta ahora tengo:

pi = ProductImage(product=product) 
image = ImageFile(image_file) 
image.name = image_name # defined elsewhere 
pi.source_image.save(image_name, image) 
pi.save() 

Mi seguimiento de la pila es algo como esto:

File "dev.py", line 359, in process_csv_item 
    pi.source_image.save(image_name, image) 
File "C:\Python26\lib\site-packages\django\db\models\fields\files.py", line 92, in save 
    self.name = self.storage.save(name, content) 
File "C:\Python26\lib\site-packages\django\core\files\storage.py", line 48, in save 
    name = self._save(name, content) 
File "C:\Python26\lib\site-packages\django\core\files\storage.py", line 168, in _save 
    for chunk in content.chunks(): 
File "C:\Python26\lib\site-packages\django\core\files\base.py", line 65, in chunks 
    counter = self.size 
File "C:\Python26\lib\site-packages\django\core\files\base.py", line 39, in _get_size 
    elif os.path.exists(self.file.name): 
AttributeError: 'cStringIO.StringI' object has no attribute 'name' 

¿Dónde puedo mirar al lado?

Respuesta

15

Uso django.core.files.base.ContentFile (image_file):

pi = ProductImage(product=product) 
pi.source_image.save(image_name, ContentFile(image_file.read())) 
pi.save() 
+1

Close, que terminó siendo: 'pi.source_image.save (nombre_imagen, ContentFile (image_file.read()))' –

+0

No funciona para mí. El modelo se guardó con éxito, pero al renderizar Django arroja el error 'IOError: no se puede identificar el archivo de imagen' –

+1

Quizás le falte soporte en PIL para el tipo de formato. Intente hacer una pregunta completa al respecto, si todavía tiene un problema. – gcbirzan

Cuestiones relacionadas