First (most importantly), only the first Content-Type header is being seen by the browser (none of the following headers) because you followed it with '\n\n'. Only put two newlines on the last header sent to the browser (or let something like CGI do it for you).sub downloadFile { # $filepath is the directory # $filename is the name of the file my ($filepath,$filename) = @_; chdir($filepath) || return(0); my $filesize = -s $filename; # print full header print "Content-Type: application/octet-stream\n\n"; print "Content-Length: $filesize\n"; print "Content-disposition: attachment; filename=$filename\n\n"; print "Content-type: text/plain\n\n"; # open in binmode open(READ,$filename) || die; binmode READ; # stream it out binmode STDOUT; while (<READ>) { print; } close(READ); # should always return true return(1); }
Also, you are sending two Content-Type headers for the same data. text/plain would probably be appropriate for the dbschema.txt file.
binmode() is also probably unnecessary.
-David
In reply to Re: Not able to display 'save as dialog box' in browser
by erroneousBollock
in thread Not able to display 'save as dialog box' in browser
by perlCrazy
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |