0

cgi perl でファイルをダウンロードできません。代わりに、Web ページ自体に内容が印刷されます。これは私が試したものです。

コード:

use CGI qw /:standard /;
use CGI;

print "Content-type:text/html\n\n";
my $files_location;
my $ID;
my @fileholder;

$directorypath = "/var/www/cgi-bin/";        
$files_location = $directorypath;
$ID = 'file.txt';
#$ID = param('ID');  

if ($ID eq '') {  
print "You must specify a file to download.";  
} else {  

open(DLFILE, "<$files_location/$ID") || Error('open', 'file');  
@fileholder = <DLFILE>;  
close (DLFILE) || Error ('close', 'file');  

#these are the html codes that forces the browser to open for download  
print "Content-Type:application/x-download\n";  
print "Content-Disposition:attachment;filename=$ID\n\n";  
print @fileholder;  
}

私はこれを取得しています:

Content-Type:application/x-download Content-Disposition:attachment;filename=file.txt ih how are u iam hre

file.txt

お元気ですか

4

3 に答える 3

3

4 行目で次のようになります。

print "Content-type:text/html\n\n";

その二重\nはヘッダーの終わりを示し、コンテンツが続きます。それを取り除き、もう一度やり直しますか?

于 2013-10-17T10:59:19.250 に答える
0

以下の行を上から if ループの内側に移動する必要があります。

print "Content-type:text/html\n\n";

if ($ID eq '') {  
print "Content-type:text/html\n\n";
print "You must specify a file to download.";  
}
于 2016-10-23T09:23:39.123 に答える