> This isn't working because the else: is dangling. And I think your logic is > flawed (I might be wrong of course) because you rename the *existing* file > instead of giving the new one a new data. > > Thus e.g. a link to the file (if it's a webserver) will suddenly deliver a > different file. I doubt that's what you wanted. And you also can only upload > one file per *day*. Which doesn't sound good to me. You should disambiguate > further. And if it's ok to append a date, I suggest you do that always. > > So instead, the logic should be something like this: > > import datetime > > basename = ... # however you get to that > > basename = basename + "_" + datetime.datetime.now().strftime("%Y-%m-%d") > > count = 0 > filename = basename > while os.path.isfile(filename): > filename = basename + "." + count > count += 1 > > > Diez
Diez, Ahh that would be much easier to just date the file upon upload. My initial concern was that renaming the file would alter the hash value, obviously I didn't think this one through too well. I adjusted the code and tried to incorporate your recommendation but still no go. Anything else obviously wrong with the following snippet? Thanks # Test if the file was uploaded if fileitem.filename: # strip leading path from file name to avoid directory traversal attacks fn = os.path.basename(fileitem.filename) # Include date in filename. basename = fn basename = basename + "_" + datetime.datetime.now().strftime("%Y-%m-%d") count = 0 fn = basename while os.path.isfile(fn): fn = basename + "." + count count += 1 # Open file for writing 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.' -- http://mail.python.org/mailman/listinfo/python-list