in reply to Web Initiated File Download
From this Microsoft article:
When you serve a document from a Web server, you might want to immediately prompt the user to save the file directly to the user's disk, without opening it in the browser. However, for known MIME (Multipurpose Internet Mail Extensions) types such as Microsoft Word ("application/ms-word"), the default behavior is to open the document in Internet Explorer.
You can use the content-disposition header to override this default behavior. Its format is:Content-disposition: attachment; filename=fname.ext
You can also read RFC 1806 which may give you more information. According to the RFP, you don't specify the filename with an "inline" content-disposition. Further, "inline" is designed to render the data directly rather than prompt for a dialog box, which is what your issue appears to be. I'd try the following untested code (note that I am passing the MIME type rather than hard-coding it):
sub download_file { my ( $filename, $mime ) = @_; if ( ! -e $filename ) { croak "$filename does not exist": } my $filesize = -s $filename; # print full header print "Content-disposition: attachment; filename=$filename\n"; print "Content-Length: $filesize\n"; print "Content-Type: $mime\n\n"; # open in binmode open READ, "< $filename" or croak "Cannot open $filename for r +eading: $!"; binmode READ; # stream it out binmode STDOUT; { local $/; print <READ>; } close(READ); # should always return true return(1); }
Cheers,
Ovid
Vote for paco!
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: (Ovid) Re: Web Initiated File Download
by THRAK (Monk) on Sep 07, 2001 at 19:16 UTC | |
by Ovid (Cardinal) on Sep 07, 2001 at 19:48 UTC |