【发布时间】:2019-11-14 00:04:21
【问题描述】:
我正在尝试从服务器下载 csv 文件。文件正在下载,但它是空的。任何建议都非常受欢迎。文件名为 Maintenance_File.csv,位于 /home/netcool 位置。
#!/usr/bin/perl
use CGI ':standard';
use CGI::Carp qw(fatalsToBrowser);
my $files_location;
my $ID;
my @fileholder;
$files_location = "/home/netcool";
#$ID = param('file');
$ID = "Maintenance_File.csv";
#print "Content-type: text/html\n\n";
#print "ID =$ID";
if ($ID eq '') {
print "You must specify a file to download.";
} else {
$fileloc="/home/netcool/" . $ID;
open(DLFILE, "$fileloc") || Error('open', 'file');
@fileholder = <DLFILE>;
close (DLFILE) || Error ('close', 'file');
#print "Files data = @fileholder";
print "Content-Type:application/octet-stream;\n";
print "Content-Disposition:attachment;filename=\"$ID\"\r\n\n";
print @fileholder
#open(DLFILE, "< $fileloc") || Error('open', 'file');
#while(read(DLFILE, $buffer, 100) ) {
# print("$buffer");
#}
#close (DLFILE) || Error ('close', 'file');
}
【问题讨论】:
-
当我在新安装的 Ubuntu 上设置它并进行了一些微小的调整(因为我没有名为
/home/netcool/Maintenance_File.csv的文件),它完全按预期工作。因此,问题在于您没有向我们展示的东西。你在什么系统上运行这个?是否有任何内容写入 Web 服务器错误日志? -
我的意思是,我可以建议对代码进行各种改进(为什么不使用
use strict和use warnings?为什么加载CGI.pm 然后不使用它?你为什么要在 2019 年编写 CGI 程序?)但是,基本上,这种方法是有效的。