【问题标题】:Passing uploaded files from php to Perl script将上传的文件从 php 传递到 Perl 脚本
【发布时间】:2013-02-06 03:54:31
【问题描述】:

我有一个 perl 脚本,它将输入作为文件并以文本文件的形式返回结果。我想使用文件作为输入,由用户通过 php 页面上传。为此我该怎么办?我有 PHP 5.3.14 和 ActivePerl 5.14.x。

【问题讨论】:

  • 首先,您尝试过什么?其次,您是在问如何在 PHP 中使用上传的文件?或者如何将它从 perl 脚本直接传递给要返回结果的 php 脚本?

标签: php perl


【解决方案1】:

在 PHP 中,当一个文件被上传时,它首先被放置在一个临时位置。您可以使用move_uploaded_file() 将其移动到另一个位置:

http://php.net/manual/en/function.move-uploaded-file.php

然后,您可以通过多种方式调用您的 Perl 脚本,如下所述:

How can I call a Perl script from PHP?

所以,假设您正在使用 exec() 函数的低级方法,并且文件上传到名为“userfile”的文件上传字段中,您可能会使用这样的内容:

$perlCommand = // ... something, e.g. from config ...
$workingPath = // ... something, e.g. from config ...
$filename = $workingPath . $_FILES['userfile']['name']
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $filename)) {
    $output = array();
    $return = 0;
    exec($perlCommand . ' ' . $filename, $output, $return);
    // Do something with $output and / or $return values
}

请注意,这假定 Perl 脚本将文件名作为参数。可能是它从标准输入中读取文件,问题并不清楚。显然,如果是后者,那么它会有点不同,同样取决于您调用 Perl 的方法。

【讨论】:

  • 或者是一个预制脚本,它从表单本身获取输入,用户修改表单以适应并将文本正常输出到浏览器。 ^^
【解决方案2】:

感谢@leftclickben

我已经解决了这个问题。我使用表单从用户那里获取文件,然后将文件名保存到参数$file

然后我将 $file 传递给 Perl 脚本使用

$result = shell_exec("path\to\perl.pl" $file);
echo $result;

$file 作为名为 $ARGV[0] 的数组传递给 perl.pl

#!usr/bin/perl

$filename = $ARGV[0];
open(HDL, $filename) or die "file not available, restart program\n";

【讨论】:

    猜你喜欢
    • 2011-02-07
    • 2019-03-04
    • 2011-06-26
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多