#7712: UploadedFile doesn't act like a file object
---------------------------------+------------------------------------------
Reporter: artagnon | Owner: nobody
Status: new | Milestone: 1.0 beta
Component: Tools | Version: SVN
Keywords: upload uploadedfile | Stage: Unreviewed
Has_patch: 0 |
---------------------------------+------------------------------------------
I encountered this while trying to use an uploaded image (using a form
with ImageField) with PIL. The relevant code is as below:
{{{
import PIL
def Avatar_file_handler(personInstance, avatarImage):
"""Writes the avatarImage to personInstance after necessary processing
avatarImage is an UploadedFile object"""
im = PIL.Image.open(avatarImage)
# *** Error on this line!
}}}
The pdb trace is as follows:
{{{
-> im = Image.open(avatarImage)
(Pdb) Image.open(avatarImage)
*** AttributeError: 'InMemoryUploadedFile' object has no attribute
'readline'
(Pdb) s
--Call--
> /usr/lib/python2.5/site-packages/PIL/Image.py(1880)open()
-> def open(fp, mode="r"):
(Pdb) n
> /usr/lib/python2.5/site-packages/PIL/Image.py(1883)open()
-> if mode != "r":
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1886)open()
-> if isStringType(fp):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1891)open()
-> filename = ""
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1893)open()
-> prefix = fp.read(16)
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1895)open()
-> preinit()
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1897)open()
-> for i in ID:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1898)open()
-> try:
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1899)open()
-> factory, accept = OPEN[i]
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1900)open()
-> if not accept or accept(prefix):
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1901)open()
-> fp.seek(0)
(Pdb)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1902)open()
-> return factory(fp, filename)
(Pdb)
SyntaxError: SyntaxEr...A file',)
> /usr/lib/python2.5/site-packages/PIL/Image.py(1902)open()
-> return factory(fp, filename)
(Pdb) print factory(fp, filename)
*** SyntaxError: invalid IPTC/NAA file
}}}
--
Ticket URL: <http://code.djangoproject.com/ticket/7712>
Django Code <http://code.djangoproject.com/>
The web framework for perfectionists with deadlines
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---