[Zope] Cleaning Filenames from Windows

Edward Pollard pollej at uleth.ca
Mon Sep 29 11:59:20 EDT 2003


I wanted to revisit this based on my experiences.

The problem was cleaning filenames from file uploads in browers that 
pass the entire local path to the server. Stupid browsers.

os.path.basename seems to only work in the context of the path as given 
on the local system: ie. when used on Unix, it does not fix up Windows 
filenames. At the very least I can't get it to work on my Mac OS X box.

Terry's suggestion again neglects non-Windows paths where forward slash 
or semicolon can be the separator.

I'm left thinking my algorithm - find the last slash, backslash, or 
semicolon, and go to the end - is the most universal approach.

Although I'm entirely reluctant to come to the feet of the masters and 
contradict them ;-)

Ed

On Friday, September 19, 2003, at 06:33 PM, Terry Hancock wrote:

> On Friday 19 September 2003 05:16 pm, Edward Pollard wrote:
>> For the sake of completeness:
>> filename[max(string.rfind(filename, '/'),string.rfind(filename,
>> '\\'),string.rfind(filename, ':'),)+1:]
>
> str(filename).split('\\')[-1]


On Friday, September 19, 2003, at 04:44 PM, Paul Winkler wrote:

> Or you could let the python core developers do it for you:
>
> os.path.basename(foo)




More information about the Zope mailing list