File Uploads

Doug Helm dhelm at wcsoftware.com
Sun Mar 27 19:32:20 CEST 2005


Hey, Folks:

I'm trying to write a very simple file upload CGI.  I'm on a Windows server.
I *am* using the -u switch to start Python for CGIs, as follows:

c:\python\python.exe -u %s %s

I *do* have write permissions on the directory I'm trying to write to.  But,
when I click submit, it just hangs.  Any help would be greatly appreciated.
Thanks.  Here's the code...

Upload.py

import cgi

print "content-type: text/html\n\n"

form = cgi.FieldStorage()
if not form:
  print """
<html>
<head></head>
<body>
<form name="frmMain" action="Upload.py" method="POST"
enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit">
</form>
</body>
</html>
"""
else:
  import BLOB
  lobjUp = BLOB.BLOB()
  if lobjUp.Save('filename', 'SomeFile.jpg'):
    print """
<html>
<head></head>
<body>
  File successfully saved.
</body>
</html>
"""
  else:
    print """
<html>
<head></head>
<body>
  Unable to save file.
</body>
</html>
"""

--------------

Blob.py

import cgi
import staticobject

cTrue = 1
cFalse = 0

try:
  import msvcrt,os
  msvcrt.setmode( 0, os.O_BINARY ) # stdin  = 0
  msvcrt.setmode( 1, os.O_BINARY ) # stdout = 1
except ImportError:
  pass


class BLOB(staticobject.StaticObject):

  def __init__(self):
    self.initializing = cTrue
    staticobject.StaticObject.__init__(self)
    self.initializing = cFalse

  def Save(self, pstrFormFieldName, pstrFilePathAndName):

# tried this first -- same result -- just hangs...
#    try:
#      form = cgi.FieldStorage()
#      item = form[pstrFormFieldName]
#      if item.file:
#        data = item.file.read()
#        f = open(pstrFilePathAndName,'wb')
#        f.write(data)
#        f.close()
#        return cTrue
#      else:
#        return cFalse
#    except:
#      return cFalse

    form = cgi.FieldStorage()
    f = open(pstrFilePathAndName,'wb')
    f.write(form[pstrFormFieldName].value)
    f.close()





More information about the Python-list mailing list