Anybody can help me! I have been driven mad by this error On Sat, Apr 11, 2009 at 7:25 PM, Hanjie <[email protected]> wrote:
> I have not solve this problem, please help me~~
> It is already two days~~[?]
>
> when I upload the file, the method "add" get the parameter"image", I guess
> the "image" is the data of uploaded file. I try to write the data to
> disk.(follow the wiki),
> I tried like this "data = image.file.read()", from wiki I know the TG
> should treat it as file-object. But, It doesn't work. I get the traceback :
>
> data = image.file.read()
> AttributeError: 'dict' object has no attribute 'file'
>
> -------------------following: detail----------------------------------
>
> I upload the image. And I use widget "file_fields.widgets.ImageField" to
> create a form_table class. like following:
> --------------------------------------------------------------------
> class AddFields(widgets.WidgetsList):
> title = widgets.TextField(
> label='Title',
> validator=validators.NotEmpty(),
> )
> image = file_fields.widgets.ImageField(
> validator=validators.NotEmpty(),
> )
> content = widgets.TextArea(
> validator=validators.NotEmpty(),
> attrs=dict(rows=10, cols=45)
> )
> add_form = widgets.TableForm(
> fields=AddFields(),
> name="w_addform",
> action="/add",
> submit_text="Add new!"
> )
> -----------------------------------------------------------
>
> In the control.py, I create the method:
>
> @expose()
> @error_handler(index)
> def add(self,title,content,image,*args, **kw):
> p = model.postTable.get(int(post_id))
> data = image.file.read()
> newPost=model.postTable(
> title = title,
> content = content,
> )
> # open file in binary mode for writing
> targetFileName = os.path.join(
> os.getcwd(),
> UPLOAD_DIR,
> "image.filename"
> )
> f = open(targetFileName, 'wb')
> f.write(data)
> f.close()
> tg.flash(
> "File uploaded successfully:"%s saved as: %s" \
> % (image.filename, targetFileName)
> )
> newUploadFile = model.uploadedFile(
> filename=image.filename,
> abspath=targetFileName,
> size=0,
> referenced_in_posts = p,
> )
> raise redirect("/")
>
>
> ---------------------------model.py-----------------------------
> class postTable(SQLObject):
> title = UnicodeCol(length=50)
> content = UnicodeCol()
> postDate = DateTimeCol(default=datetime.now())
> isPublished= BoolCol(default=False)
> comments=MultipleJoin('commentTable')
> pictures=MultipleJoin('uploadedFile')
>
> class uploadedFile(SQLObject):
> filename = UnicodeCol(alternateID=True, length=100)
> abspath = UnicodeCol()
> size = IntCol()
> referenced_in_posts = ForeignKey('postTable')
>
> --------------------traceback----------------------------------
>
> Page handler: <bound method Root.add of <assignment.controllers.Root object
> at 0x019FA4B0>>
>
> Traceback (most recent call last):
> File
> "c:\python25\lib\site-packages\cherrypy-2.3.0-py2.5.egg\cherrypy\_cphttptools.py",
> line 121, in _run
> self.main()
> File
> "c:\python25\lib\site-packages\cherrypy-2.3.0-py2.5.egg\cherrypy\_cphttptools.py",
> line 264, in main
>
> body = page_handler(*virtual_path, **self.params)
> File "<string>", line 3, in add
> File
> "c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\controllers.py",
> line 360, in expose
>
> *args, **kw)
> File "<string>", line 5, in run_with_transaction
> File
> "c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\database.py",
> line 359, in so_rwt
> retval = func(*args, **kw)
>
> File "<string>", line 5, in _expose
> File
> "c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\controllers.py",
> line 373, in <lambda>
> mapping, fragment, args, kw)))
>
> File
> "c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\controllers.py",
> line 410, in _execute_func
> output = errorhandling.try_call(func, *args, **kw)
> File
> "c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\errorhandling.py",
> line 77, in try_call
>
> return func(self, *args, **kw)
> File "C:\Documents and
> Settings\hanjie\assignment\assignment\controllers.py", line 36, in add
> data = image.file.read()
> AttributeError: 'dict' object has no attribute 'file'
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> 2009/4/9 Florent Aide <[email protected]>
>
>
>> On Thu, Apr 9, 2009 at 10:55 AM, Diez B. Roggisch <[email protected]> wrote:
>> >
>> > On Thursday 09 April 2009 10:38:21 跑步鱼 wrote:
>> >> Why does it happen
>> >> I followed the introduction from wiki~
>> >> Anybody can help me?
>> >
>> > Please show us what the video-object actually is, by printing out it's
>> repr or
>> > something like that.
>>
>> from the traceback it seems to be a dict. Maybe you're missing an
>> @validate on your exposed save method?
>>
>> Florent.
>>
>> >>
>>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" 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/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---
<<inline: 331.gif>>

