Graham Dumpleton
grahamd at dscpl.com.au
Mon Sep 25 08:04:30 EDT 2006
Please keep followups on mailing list. On 25/09/2006, at 9:49 PM, sandip wrote: > Hi, > Thanks Graham, I am using self contained psp. > > my html form is > <form enctype="multipart/form-data" method="post"> > <input name=x1> > <input name=x2> > <input name=UploadFile type=file> > </form> > > > following is my working code... > frm = util.FieldStorage(req) > x1= int(frm.getlist('x1')[0]) > x2 = str(frm.getlist('x2')[0]) > upfile = frm.getlist('UploadFile')[0] > filename = upfile.filename > filedata = upfile.value > > > Previously i did this, it didn't worked...means it gave me correct > values of x1,x2 byut didn't gave me any attributes of uploaded file.. > x1 = form['x1'] > x2 = form['x2'] > frm = util.FieldStorage(req) > filename = upfile.filename > filedata = upfile.value Which will fail because of a second instance of FieldStorage being created. The first having been created automatically by PSP handler when 'form' variable is referenced. What happens when you use: x1 = form['x1'] x2 = form['x2'] upfile = form['UploadFile'] filename = upfile.filename filedata = upfile.value Graham > Regards, > Sandip > ---- Original Message ----- From: "Graham Dumpleton" > <grahamd at dscpl.com.au> > To: "sandip" <sandip.more at gmail.com> > Cc: <mod_python at modpython.org> > Sent: Monday, September 25, 2006 5:06 PM > Subject: Re: [mod_python] util.Fieldstorage and form > > >> Your questions may in part be answered by: >> >> http://issues.apache.org/jira/browse/MODPYTHON-38 >> >> If FieldStorage object is constructed twice, on the second time >> round, it >> will only be able to provide access to form fields which are part >> of the >> query string of the URL itself and not any field embedded as >> multipart >> form data within the content of the POST request. This was what Jim >> was getting as except that he didn't mention case where mix of query >> string and multipart form parameters used. >> >> What is not clear from your message is whether you are doing >> absolutely >> everything within a self contained PSP page, or whether you are >> actually >> using a wrapper around it in the form of a custom handler or a >> handler >> such as mod_python.publisher. >> >> If you are wrapping PSP stuff on mod_python.publisher functions, you >> actually need to pass in "form" something like: >> >> settings = {} >> ... >> settings.update({"form":req.form}) >> template = psp.PSP(req,filename=path,vars=settings) >> template.run() >> >> In mod_python 3.3, this will no longer be necessary as PSP has been >> changed to use req.form which may be inherited from a custom handler >> which has already created it and stored it as that named attribute >> of the >> request object. >> >> Can you be clearer about whether you are using mix of query string >> parameters and multipart form parameters within content of request, >> and clarify whether you are using PSP only or in conjunction with >> another handler. >> >> Posting an actual small working example of what you are talking about >> would be good, as then we don't need to guess. >> >> Graham >> >> On 21/09/2006, at 11:17 PM, sandip wrote: >> >>> Thanks Jim. This explains the puzzle. >>> but form['filefield'] doesn't work for accessing file data. >>> how to use form to access file data? or Is form being implemented >>> partially in mod_python? >>> >>> thanks >>> sandip >>> >>> >>> ----- Original Message ----- From: "Jim Gallacher" >>> <jpg at jgassociates.ca> >>> To: "sandip" <sandip.more at gmail.com> >>> Cc: <mod_python at modpython.org> >>> Sent: Thursday, September 21, 2006 6:02 PM >>> Subject: Re: [mod_python] util.Fieldstorage and form >>> >>> >>>> sandip wrote: >>>>> Hi all, >>>>> Other day i was trying to build upload functionality in psp. >>>>> I am handling form(method: POST) submission in psp. >>>>> this form contain a hidden element and a element of type file >>>>> for upload. >>>>> I observed certain things. When I use form['field'] to access >>>>> value of hidden form element,and in same code >>>>> if I use FieldStorage(req) to get the attributes of uploaded >>>>> file. I can't access file attributes. >>>>> >>>>> but if I use only FieldStorage to access all the elements of >>>>> form, I could access it. >>>>> >>>>> so why can't I use both form and FieldStorage in same code? >>>> >>>> The form you see in psp is actually a FieldStorage instance >>>> which is automatically created when the psp parse encounters >>>> mention of the form variable. >>>> >>>> FieldStorage may only be called once per request, as it >>>> consumes the request body. Wnen it is called a second time, >>>> there is nothing left to read. >>>> >>>> The usual solution is to store a reference to the form in your >>>> request object, and pass that around to any functions that need it. >>>> >>>> <% >>>> stuff = form['stuff'] >>>> req.form = form >>>> %> >>>> >>>> You'll then be able to access the form in code outside of the >>>> psp page. >>>> >>>> Jim >>> >>> _______________________________________________ >>> Mod_python mailing list >>> Mod_python at modpython.org >>> http://mailman.modpython.org/mailman/listinfo/mod_python
|