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