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);
}
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).
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
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|