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

Reply via email to