| nicolas -
 
 
 Joined: 12 Aug 2008
 Posts: 2
 
 
 | 
			
				|  Posted: Tue Aug 12, 2008 10:23 am    Post subject: [python] upload binary files-Win32/Abyss+ActivePython how-to |   |  
				| 
 |  
				| HTML upload script (example) - don't forget the multipart/form-data encoding type and the max value file size - : 
 <!DOCTYPE html>
 <html lang="en">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="content-type" />
 <title>Upload Form Page</title>
 </head>
 <body>
 <H2>Upload File</H2><P>
 <FORM ENCTYPE="multipart/form-data" METHOD="POST" ACTION="upload.py">
 <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="2048">
 <INPUT TYPE="file" SIZE="70" NAME="uFile">
 <P><INPUT TYPE="SUBMIT" VALUE="upload">
 </FORM>
 </body>
 </html>
 
 Python upload script (example derived from ISBN-13: 978-2744021497 book) :
 
 #!/usr/bin/python
 import cgi, os, sys, string
 import posixpath, macpath # modify here to fit you os.
 
 ## here is the tip for Win32 bin uploads ##
 import cgitb; cgitb.enable()
 import msvcrt, os
 msvcrt.setmode (0, os.O_BINARY)
 msvcrt.setmode (1, os.O_BINARY)
 ############################
 
 saveDir = "../your_directory" # modify your target directory
 
 #Send errors to browser
 sys.stderr = sys.stdout
 
 #Parse data from form
 data = cgi.FieldStorage()
 
 #Save the file to server directory
 def saveFile(uFile):
 fPath = "%s/%s" % (saveDir, uFile.filename)
 buf = uFile.file.read()
 sFile = open(fPath, 'wb')
 sFile.write(buf)
 sFile.close()
 
 
 #Send response to brower
 webText = """Content-type: text/html\n"
 <TITLE>CGI Upload Form</TITLE>\n
 <H2>Upload File</H2><P>"""
 print webText
 
 if data.has_key('uFile'):
 saveFile(data['uFile'])
 print "<B>%s</B> uploaded." % (data['uFile'].filename)
 |  |