This is a known bug. Thanks for the patch. The problem with it is that filenames containing backslash characters are valid on Unix. I haven't been able to come up with a solution to this. Any ideas? --jfarr "Perl is worse than Python because people wanted it worse." Larry Wall, 14 Oct 1998 ----- Original Message ----- From: Dan L. Pierson <dan@sol.control.com> To: <zope@zope.org> Sent: Thursday, June 15, 2000 12:58 PM Subject: [Zope] LocalFS cross platform bug
If you upload from a browser on a Windows machine to a server running on Linux, the id (and thus the file name) of the new file will be the complete Windows path instead of just the file name. This happens because os.basename on Linux doesn't know how to handle Windows pathname syntax.
Here's a rather crude diff -u patch that works for me:
--- LocalFS.py-orig Fri Apr 14 00:36:06 2000 +++ LocalFS.py Thu Jun 15 15:36:19 2000 @@ -625,10 +625,16 @@ "to this directory.<p>") else: raise
+ def _canonicalize_pathname(self, path): + if (string.count(path, '\\')): + if (len(path) > 1 and path[0] in string.letters and path[1] == ':'): + path = path[2:] + path = string.translate(path, string.maketrans('\\', '/')) + def manage_upload(self, file, REQUEST=None): """Upload a file to the local file system. The 'file' parameter is a FileUpload instance representing the uploaded file.""" - id = os.path.basename(file.filename) + id = os.path.basename(self._canonicalize_pathname(file.filename)) path = self._getpath(id) data = file.read(_test_read) if (find_binary(data) >= 0):
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )