2013-11-02 131 views
0

我有一个文件共享网站在PHP中,它可以让用户下载files.But,因为我使用托管的服务器有超时限制和其他因素,而在PHP下载脚本编写时发挥作用。这会导致大文件在下载时损坏。我正在寻找一个解决方案,我已经尝试使用符号链接,但强制下载因素不发生....我可以使用Perl下载PHP脚本中的文件吗?

我想用perl下载文件bt没有任何线索,所以永远.. ..

任何人都可以帮我解决这个问题?

+0

我想在Perl脚本中没有限制,否则 - 你从交换中获得了什么? 如果是这样,不要在PHP中使用perl,而要使用perl而不是PHP。意思是把所有的下载工作都交给PHP脚本。 – MeNa

回答

0

这是一个粗略的Perl脚本,它利用了CGI模块。它已被写入演示核心概念,而不是生产准备。

它假定:

  • 您将通过URL来调用,直接或iframe等
  • 您将通过参数文件名。它的值是您要下载的文件的文件名。
  • 文件所在的dirpath是当前的工作目录。
  • 路径分隔符是/(Linux)。

基本上,打印适当的内容类型将强制下载到磁盘。

#!/usr/bin/perl 
use strict; 
use warnings FATAL => qw(all); 
use CGI::Carp qw(fatalsToBrowser); 
use CGI; 
use Cwd; 

my $cgi = CGI->new; 

my $dirpath = getcwd; 
my $filename = $cgi->param('filename') || die 'filename required'; 
my $filepath = $dirpath . '/' . $filename; 

open my $fh, '<', $filepath or die "cannot open '$filepath': $!"; 
my $filedata = do { $/ = undef; <$fh> }; 
close $fh; 

print $cgi->header(-type  => 'application/octet-stream', 
        -attachment => $filename); 

print $filedata; 
+0

如何从一个PHP脚本调用它? – jision

+0

它是一个独立的脚本,可以从你的PHP中调用,例如'