(possible) zip and file download problem
I asked a question a couple of weeks ago about using Archive::Zip, and although my script does work, I still have a few queries about it; I wonder if anyone can shed any light. The basic idea is that there are files of multiple formats (.doc, .pdf, .etc) that need to be downloaded through a users browser. It also needs to be downloaded through the program logic, and not as a simple link. The main problem is that the zipped file downloads as NameOfCGIFile.zip and not download.zip. I am also slightly more concerned about my (possibly pitiful) attempts at file locking, and the consequences of many users trying to download files at the same time. I've been playing around with this for some time, but I can't find a better way to do this. ($file - name from database query) my $zip = Archive::Zip-new() or die couldn't create zip $!; $zip-addFile(/web/www.website.com/docs/$file) or die couldn't add file $!; $zip-writeToFileNamed('/web/www.website.com/docs/download.zip');# possible lock error; open (DOCZIP, /web/www.website.com/docs/download.zip) or die couldn't open file $!; flock (DOCZIP, 2); print Content-type:application/x-zip-compressed\n\n; my $fileData; while (read(DOCZIP, $fileData, 1024)) { print $fileData; } unlink (/web/www.website.com/docs/download.zip) or die couldn't delete file $!; close(DOCZIP); tia Jon * Jon Galliers [EMAIL PROTECTED] Programmer Perl/C++/MySQL/DB2/Java Design Net http://www.design.net.uk Tel: +44(0)870 240 0088 Fax: +44(0)870 240 0099 *
Re: (possible) zip and file download problem
On Mon, Apr 23, 2001 at 12:06:06PM +0100, Jon Galliers wrote: The main problem is that the zipped file downloads as NameOfCGIFile.zip and not download.zip. I think you might like to have a look at the Content-Disposition MIME header. Something like this: print Content-type:application/x-zip-compressed\n . Content-Disposition: attachment; filename=$file\n\n; -- Niklas Nordebo -- [EMAIL PROTECTED] -- +447966251290 The day is seven hours and fifteen minutes old, and already it's crippled with the weight of my evasions, deceit, and downright lies
Re: (possible) zip and file download problem
Quoting Jon Galliers ([EMAIL PROTECTED]): ($file - name from database query) my $zip = Archive::Zip-new() or die couldn't create zip $!; $zip-addFile(/web/www.website.com/docs/$file) or die couldn't add file $!; $zip-writeToFileNamed('/web/www.website.com/docs/download.zip');# possible lock error; open (DOCZIP, /web/www.website.com/docs/download.zip) or die couldn't open file $!; flock (DOCZIP, 2); print Content-type:application/x-zip-compressed\n\n; my $fileData; while (read(DOCZIP, $fileData, 1024)) { print $fileData; } unlink (/web/www.website.com/docs/download.zip) or die couldn't delete file $!; close(DOCZIP); Another trick that we used was to overload the pathinfo. Just create a URL that looks like www.website.com/cgi-bin/NameOfCGI/fileno.zip. Netscape and Explorer will take the last bit to prompt you with in the Save As dialog, while the webserver will just invoke NameOfCGI, which in turn will be able to find fileno.zip in it's path info. Cheers, -- Merijn Broeren | Sometime in the middle ages, God got fed up with us Software Geek | and put earth at sol.milky-way.univ in his kill-file. | Pray all you want, it just gets junked.