我可以用perl在php脚本中下载文件吗?

时间:2013-11-02 21:30:28

标签: php perl

我有一个用php制作的文件共享网站,它允许用户下载文件。但是当我使用托管服务器时,对于在php中编码的下载脚本时出现超时和其他因素的限制。这会导致大文件在下载时损坏。我正在寻找一个解决方案,我尝试使用符号链接但力量下载因素没有发生....

我正在考虑使用perl来下载文件,但是根本没有任何线索......

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

2 个答案:

答案 0 :(得分:0)

您可以在php脚本中运行bash命令

<?php
    $command = "ls -lrat";
    Shell_exec($command);

答案 1 :(得分:0)

这是一个粗略的Perl脚本,它使用了CGI模块。它的编写是为了展示核心概念,而不是生产就绪。

它假设:

  • 您将通过网址,直接或iFrame等方式调用。
  • 您将传递参数文件名。它的值是您要下载的文件的文件名。
  • 文件所在的目录路径是当前的工作目录。
  • 路径分隔符是/(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;