[Zope-dev] FileUpload and blob on Windows

Leonardo Rochael leo at enfoldsystems.com
Mon Jan 28 23:47:27 EST 2008


Hi Mark,


Mark Hammond-3 wrote:
> 
> [...]
>> unless we use some non-portable win32 code to allow writing and 
>> reading to the same file simultaneously.
> 
> I'm not sure exactly what you mean by "simultaneously", but assuming you
> just need the ability to read and write to a file, you already can.  Does
> this behaviour help?
> 
>>>> import tempfile
>>>> f = tempfile.NamedTemporaryFile()
>>>> f.write("hello")
>>>> f.seek(0,0)
>>>> f.read()
> 'hello'
> 
> I can easily see it might not - as soon as the file is closed you have
> (obviously) lost it.
> 
> 

I should've been clearer, I meant reading and writing at the same time from
2 different file handles. 

NamedTemporaryFile has the added complication of removing the file from
under 'blob' when it's closed, so even if I don't try to open the blob after
consuming the file, the file disappears after the request is gone, and the
transaction subsequently fails when trying to rename the consumed file to
it's final location.

I also tried win32file.CreateHardLink() but if a file is open by one
hard-link, renaming the other hard-link fails, so we're stuck with copying
files wholesale on Windows, or closing the FileUpload object and letting
subsequent uses of it fail.
-- 
View this message in context: http://www.nabble.com/FileUpload-and-blob-on-Windows-tp15129190p15152299.html
Sent from the Zope - Dev mailing list archive at Nabble.com.



More information about the Zope-Dev mailing list