The script below uploads files to a web server. Currently it overwrites a file if it already exists. I'm instead trying to rename the old file with an appended date/timestamp before the new file is uploaded. I *think* I have the idea down but it's not be implemented in the script correctly. Any hints would be great, thanks.
#!/usr/bin/env python import cgi, os import cgitb; cgitb.enable() #import os.path import hashlib import datetime try: # Windows needs stdio set for binary mode. import msvcrt msvcrt.setmode (0, os.O_BINARY) # stdin = 0 msvcrt.setmode (1, os.O_BINARY) # stdout = 1 except ImportError: pass form = cgi.FieldStorage() # Generator to buffer file chunks def fbuffer(f, chunk_size=10000): while True: chunk = f.read(chunk_size) if not chunk: break yield chunk # A nested FieldStorage instance holds the file fileitem = form['file'] # Test if the file was uploaded if fileitem.filename: # Test to determine if file name already exists in destination and rename if it does exist to include date. if os.path.isfile(file): os.rename(file,file + "date") else: # strip leading path from file name to avoid directory traversal attacks fn = os.path.basename(fileitem.filename) f = open('/var/www/dropbox/' + fn, 'wb', 10000) h = hashlib.md5() datalength = 0 # Read the file in chunks for chunk in fbuffer(fileitem.file): f.write(chunk) h.update(chunk) datalength += len(chunk) hexdigest = h.hexdigest() f.close() message = 'The file "' + fn + '" was uploaded successfully with a MD5 hash value of ' + hexdigest + ', click <a href="#">here</a> to go back.' else: message = 'No file was uploaded' print """\ Content-Type: text/html\n <html><body> <p>%s</p> </body></html> -- http://mail.python.org/mailman/listinfo/python-list