将上传文件从PHP移动到CGI

时间:2014-06-21 05:16:57

标签: php jquery

我试图将post文件信息传递给upload.php文件,并将该信息发送到CGI脚本。网上没有什么关于如何去做我能找到的,我花了好几天。我知道有一些人需要这个,它可以帮助我们所有拥有遗留perl脚本的人。

数据流:
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

任何建议都会有所帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

据我了解,您的CGI脚本正在接收一个参数,该参数是上传脚本的路径。但是,您尝试使用仅在不执行脚本的情况下将文件从1个位置移动到另一个位置的函数将上载的脚本传递到CGI脚本。 我的建议是做以下

<?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;  
    }  
}  

?>

您可以通过CURL POST执行cgi脚本并传递您想要的任何参数