2014-06-21 70 views
0

我試圖將post文件信息傳遞給upload.php文件,並將這些信息發送給CGI腳本。網上沒有關於如何去做這件事,我可以找到,花了幾天。我知道有幾個人需要這個,它可以幫助我們所有有遺留Perl腳本的人。將文件從PHP上傳到CGI

數據流:
jQuery的 - >upload.php的 - >的index.cgi

我的PHP:

<?php 
if(isset($_FILES['file'])) { 

if(move_uploaded_file($_FILES['file']['tmp_name'], "../index.cgi" . $_FILES['file']['name'])){ 

      echo "success"; 

      exit; 
} 
} 
?> 

後調用CGI例如:

foobar.com/index.cgi?act=store&data=$filename 

任何建議都會有很大幫助。謝謝。

+0

是通過HTTP(瀏覽器)的CGI腳本訪問的任何PARAMS? –

+0

是的!它可以到達本地和NAT。 – Rapt0R

回答

2

從我的理解,你的CGI腳本正在接收一個參數,它是上傳腳本的路徑。但是,您正嘗試使用一種功能將上載的腳本傳遞給CGI腳本,該功能只應將文件從1位移到另一位,而不執行腳本。 我的建議是做以下

<?php 
if(isset($_FILES['file'])) { 
    $destination = "new/path/to/".$_FILES['file']['name']; 
    if(move_uploaded_file($_FILES['file']['tmp_name'], $destination)){ 

     $data = array(); 
     //You can add multiple post parameters here 
     //$data = array('param1' => 'value1', 'param2' => 'value2'); 
     $url = "http://url/to/hello.cgi"; 
     // You can POST a file by prefixing with an @ (for <input type="file"> fields) 
     $data['file'] = '@'.$destination; 

     $handle = curl_init($url); 
     curl_setopt($handle, CURLOPT_POST, true); 
     curl_setopt($handle, CURLOPT_POSTFIELDS, $data); 
     $result = curl_exec($handle); 
     if($result) { 
      echo "success"; 
     }  
     exit; 
    } 
} 

?> 

您可以通過捲曲POST執行CGI腳本,並通過你想

+0

雅這完全有道理我現在嘗試它,生病讓你張貼。非常感謝你...... – Rapt0R

+0

所以,現在我知道你的腳本,我的CGI有點複雜,然後把文件放入存儲區域。該帖子需要由一個?act = store處理,這將啓動處理數據的另一個腳本。 – Rapt0R

+0

還有另外一種你可以想到的方式嗎?再次感謝。 – Rapt0R