2013-02-02 66 views
0

我有一個perl腳本,它將輸入作爲文件並將結果返回到文本文件中。我想使用文件作爲輸入,這是由用戶通過php頁面上傳。爲此,我該怎麼做?我有PHP 5.3.14和ActivePerl 5.14.x.將上傳的文件從php傳遞到Perl腳本

+1

第一陣列的Perl腳本,你嘗試過什麼?其次,你是問如何在PHP中使用上傳的文件?或者如何將它從perl腳本直接傳遞給你想要返回結果的php腳本? – Jon

回答

0

謝謝@leftclickben

我已經解決了這個問題。我使用表單從用戶獲取文件,然後將文件名保存到參數$file

然後我通過$file使用

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

$file傳遞給perl.pl爲名爲$ARGV[0]

#!usr/bin/perl 

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

在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的方法。

+0

或者是一種預先製作的腳本,它從表單本身接受輸入,並且用戶修改表單以適應並正常輸出文本到瀏覽器。 ^^ – Jon

相關問題