javascript - upload file with python - where is the file? -
i'm trying "cross origin upload" example of course "html 5 power" andy olsen (lynda.com , video2brain).
i can upload, , on server says "upload server complete". file not on server. why ?
thanks helping.
here's have in server console :
c:\cou>c:\python27\python corsserver.py 9999 serving http on 0.0.0.0 port 9999 ... 127.0.0.1 - - [24/sep/2013 10:40:28] "get /crossoriginupload.html http/1.1" 200 - received options request. 127.0.0.1 - - [24/sep/2013 10:40:43] "options /upload http/1.1" 200 - received post request. read post data 127.0.0.1 - - [24/sep/2013 10:40:50] "post /upload http/1.1" 200 - upload server complete
the file corsserver.py :
#!/usr/bin/python import basehttpserver simplehttpserver import simplehttprequesthandler class corsrequesthandler(simplehttprequesthandler): def do_post(self): print "received post request." content_length = int(self.headers['content-length']) bytes_read = 0 while bytes_read < content_length: x = self.rfile.read(1) bytes_read += 1 print "read post data" message = "upload server complete" self.send_response(200) self.send_header("access-control-allow-origin", "http://mydomain1:9999") self.send_header("content-length", str(len(message))) self.send_header("content-type", "text/plain"); self.end_headers() print message self.wfile.write(message); def do_options(self): print "received options request." self.send_response(200) self.send_header("access-control-allow-origin", "http://mydomain1:9999") self.send_header("access-control-allow-methods", "post") self.end_headers() if __name__ == "__main__": basehttpserver.test(corsrequesthandler, basehttpserver.httpserver)
and crossoriginupload.html :
<!doctype html> <head> <title>uploading data</title> <style> body { font-family: arial, verdana; } </style> <script> //cross-origin requests // global variables. var targetlocation = "http://localhost:9999/upload"; var messageareaelem; var progressbarelem; // handles "start upload" button click. function dostartupload() { progressbarelem.value = 0; messageareaelem.innerhtml = ""; // file selected user. var fileelem = document.getelementbyid("file"); if (fileelem.files.length == 0) { messageareaelem.innerhtml = "you must select file upload first"; } else { messageareaelem.innerhtml = "opening file..."; // start reading file memory. var reader = new filereader(); reader.onloadend = doupload; reader.readasarraybuffer(fileelem.files[0]); } } // handles "file loaded memory" event. function doupload(e) { messageareaelem.innerhtml = "uploading file server..."; // create xmlhttprequest object. var xhr = new xmlhttprequest(); // handle "upload progress" events on xmlhttprequest object. xhr.upload.onprogress = function(e) { var percentuploaded = math.floor(100 * e.loaded / e.total); progressbarelem.value = percentuploaded; messageareaelem.innerhtml = percentuploaded + "% uploaded"; } // handle "download progress" events on xmlhttprequest object. xhr.onprogress = function(e) { var percentdownloaded = math.floor(100 * e.loaded / e.total); progressbarelem.value = percentdownloaded; messageareaelem.innerhtml = percentdownloaded + "% downloaded"; } // handle "finished upload/download" events on xmlhttprequest object. xhr.onload = function(e) { messageareaelem.innerhtml = "finished"; } // handle "error" events on xmlhttprequest object. xhr.onerror = function(e) { messageareaelem.innerhtml = "error occurred"; } // upload file data asynchronously server, using xmlhttprequest object. xhr.open("post", targetlocation, true); xhr.send(e.target.result); } // performs page initialization. function onload() { document.getelementbyid("startupload").addeventlistener("click", dostartupload, true); messageareaelem = document.getelementbyid("messagearea"); progressbarelem = document.getelementbyid("progressbar"); } window.addeventlistener("load", onload, true); </script> </head> <body> <h1>ajax uploads</h1> <input type="file" id="file"/> <br/> <button id="startupload">start upload</button> <br/><br/> <progress id="progressbar" value="0" max="100"></progress> <span id="messagearea"></span> </body> </html>
this loop reads and discards uploaded data.
while bytes_read < content_length: x = self.rfile.read(1) bytes_read += 1
Comments
Post a Comment