Not knowing anythign about Flex, is it possible that it isn't being
sent as multipart/form-data ?

On Tue, Jan 13, 2009 at 11:38 AM, Brent Pedersen <[email protected]> wrote:
> URLRequest defaults to GET.
> try adding
> urlRequest.method = URLRequestMethod.POST
>
> On Tue, Jan 13, 2009 at 8:18 AM, Ben Corneau <[email protected]> wrote:
>> Here's a working example.
>> Flex:
>> ------------------------------------------------------
>> <?xml version="1.0" encoding="utf-8"?>
>> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";>
>>
>>     <mx:Button label="Upload File..." click="uploadFile()"/>
>>
>>     <mx:Script>
>>         <![CDATA[
>>
>>             import flash.events.*;
>>             import flash.net.*;
>>             import mx.controls.Alert;
>>
>>             private var uploadURL:String =
>> "http://www.server.com/upload.py/upload";;
>>             private var urlRequest:URLRequest = new URLRequest(uploadURL);
>>
>>             private var fileUpload:FileReference = new FileReference;
>>
>>             private function uploadFile():void
>>             {
>>                 fileUpload.addEventListener(Event.SELECT, onFileSelected);
>>                 fileUpload.addEventListener(Event.COMPLETE,
>> onUploadComplete);
>>                 fileUpload.browse();
>>             }
>>
>>             private function onFileSelected(evt:Event):void
>>             {
>>                 fileUpload.upload(urlRequest);
>>             }
>>
>>             private function onUploadComplete(evt:Event):void
>>             {
>>                 Alert.show("upload complete");
>>             }
>>         ]]>
>>     </mx:Script>
>>
>> </mx:Application>
>> ------------------------------------------------------
>>
>>
>> web.py:
>> ------------------------------------------------------
>> #!/usr/local/bin/python-web
>> import web
>> urls = ('/upload', 'Upload')
>> app = web.application(urls, globals())
>> class Upload:
>>     def POST(self):
>>         input = web.input(Filedata={})
>>         file = open("uploaded_files/" + input["Filedata"].filename, "w")
>>         file.write(input["Filedata"].file.read())
>>
>> if __name__ == "__main__":
>>     app.run()
>> --------------------------------------------------
>> HTH,
>> Ben
>> 2009/1/13 hhsuper <[email protected]>
>>>
>>> yes it's adobe's flex, but my side side(web.py) with html upload is ok,
>>> and the client code(flex) work with django (and other server side) is ok,
>>> that confused me, do you mind provider me a simple worked sample?
>>>
>>> 2009/1/13 Ben Corneau <[email protected]>
>>>>
>>>> I don't know what to make of your error, but I do have file upload using
>>>> flex working. I'm assuming by flex you mean Adobe Flex.
>>>>
>>>> The following web.py code works for me.
>>>>
>>>> urls = ('/upload', 'Upload')
>>>>
>>>> class Upload:
>>>>     def POST(self):
>>>>
>>>>         input = web.input(Filedata={})
>>>>         file = open("images/" + input["Filedata"].filename, "w")
>>>>         file.write(input["Filedata"].file.read())
>>>>
>>>> -Ben
>>>>
>>>> hhsuper wrote:
>>>>
>>>> i have a simple test, web.py impelement the file upload func, and tested
>>>> with the html page ok, but when i upload the file with
>>>>  flex (in the same site, actual in the same html page ), there is some
>>>> error, follow
>>>>
>>>> beside, the same flex code used for django app is ok(i have a simple
>>>> test)
>>>>
>>>> Traceback (most recent call last):
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 211, in process
>>>>     return self.handle()
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 201, in handle
>>>>     return self._delegate(fn, self.fvars, args)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 385, in _delegate
>>>>     return handle_class(cls)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 360, in handle_class
>>>>     return tocall(*args)
>>>>   File "D:\Projects\truman2\app\controllers\scene.py", line 159, in POST
>>>>     i = web.input(photo = {})
>>>>   File
>>>> "C:\Python25\lib\site-packages\web.py-0.31-py2.5.egg\web\webapi.py", line
>>>>  208, in input
>>>>     a = cgi.FieldStorage(fp=fp, environ=e, keep_blank_values=1)
>>>>   File "C:\Python25\lib\cgi.py", line 534, in __init__
>>>>     self.read_multi(environ, keep_blank_values, strict_parsing)
>>>>   File "C:\Python25\lib\cgi.py", line 659, in read_multi
>>>>     environ, keep_blank_values, strict_parsing)
>>>>   File "C:\Python25\lib\cgi.py", line 536, in __init__
>>>>     self.read_single()
>>>>   File "C:\Python25\lib\cgi.py", line 669, in read_single
>>>>     self.read_lines()
>>>>   File "C:\Python25\lib\cgi.py", line 691, in read_lines
>>>>     self.read_lines_to_outerboundary()
>>>>   File "C:\Python25\lib\cgi.py", line 719, in read_lines_to_outerboundary
>>>>     line = self.fp.readline(1<<16)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\wsgiserver\__ini
>>>> t__.py", line 206, in readline
>>>>     data = self.rfile.readline(size)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\wsgiserver\__ini
>>>> t__.py", line 1024, in readline
>>>>     data = self.recv(self._rbufsize)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\wsgiserver\__ini
>>>> t__.py", line 925, in recv
>>>>     return self._sock.recv(size)
>>>> timeout: timed out
>>>>
>>>> Traceback (most recent call last):
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 209, in process
>>>>     return p(lambda: process(processors))
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 552, in processor
>>>>     return handler()
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 209, in <lambda>
>>>>     return p(lambda: process(processors))
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 216, in process
>>>>     raise self.internalerror()
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 449, in internalerror
>>>>     return debugerror.debugerror()
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\debugerror.py",
>>>> line 299, in debugerror
>>>>     return web._InternalError(djangoerror())
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\debugerror.py",
>>>> line 289, in djangoerror
>>>>     return t(exception_type, exception_value, frames)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\template.py", li
>>>> ne 850, in __call__
>>>>     return BaseTemplate.__call__(self, *a, **kw)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\template.py", li
>>>> ne 768, in __call__
>>>>     return self._join_output(out)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\template.py", li
>>>> ne 774, in _join_output
>>>>     for name, value in out:
>>>>   File
>>>> "C:\Python25\lib\site-packages\web.py-0.31-py2.5.egg\web\debugerror.pyc",
>>>>  line 183, in __template__
>>>>     $if ctx.output or ctx.headers:
>>>>   File
>>>> "C:\Python25\lib\site-packages\web.py-0.31-py2.5.egg\web\webapi.py", line
>>>>  208, in input
>>>>     a = cgi.FieldStorage(fp=fp, environ=e, keep_blank_values=1)
>>>>   File "C:\Python25\lib\cgi.py", line 534, in __init__
>>>>     self.read_multi(environ, keep_blank_values, strict_parsing)
>>>>   File "C:\Python25\lib\cgi.py", line 654, in read_multi
>>>>     environ, keep_blank_values, strict_parsing)
>>>>   File "C:\Python25\lib\cgi.py", line 536, in __init__
>>>>     self.read_single()
>>>>   File "C:\Python25\lib\cgi.py", line 669, in read_single
>>>>     self.read_lines()
>>>>   File "C:\Python25\lib\cgi.py", line 691, in read_lines
>>>>     self.read_lines_to_outerboundary()
>>>>   File "C:\Python25\lib\cgi.py", line 719, in read_lines_to_outerboundary
>>>>     line = self.fp.readline(1<<16)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\wsgiserver\__ini
>>>> t__.py", line 206, in readline
>>>>     data = self.rfile.readline(size)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\wsgiserver\__ini
>>>> t__.py", line 1024, in readline
>>>>     data = self.recv(self._rbufsize)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\wsgiserver\__ini
>>>> t__.py", line 925, in recv
>>>>     return self._sock.recv(size)
>>>> timeout: timed out
>>>>
>>>> Traceback (most recent call last):
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 209, in process
>>>>     return p(lambda: process(processors))
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 537, in processor
>>>>     return handler()
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 209, in <lambda>
>>>>     return p(lambda: process(processors))
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 216, in process
>>>>     raise self.internalerror()
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\application.py",
>>>>  line 449, in internalerror
>>>>     return debugerror.debugerror()
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\debugerror.py",
>>>> line 299, in debugerror
>>>>     return web._InternalError(djangoerror())
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\debugerror.py",
>>>> line 258, in djangoerror
>>>>     _get_lines_from_file(filename, lineno, 7)
>>>>   File
>>>> "c:\python25\lib\site-packages\web.py-0.31-py2.5.egg\web\debugerror.py",
>>>> line 243, in _get_lines_from_file
>>>>     context_line = source[lineno].strip('\n')
>>>> IndexError: list index out of range
>>>>
>>>> --
>>>> Su zhaohui   苏召辉
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Yours sincerely
>>>
>>> Jack Su
>>>
>>>
>>
>>
>> >
>>
>
> >
>



-- 
http://www.apgwoz.com

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web.py" 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/webpy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to