Переместить загружаемый файл из PHP в CGI

#php #jquery

#php #jquery

Вопрос:

Я пытаюсь передать информацию о файле post в upload.php файл и пусть эта информация будет отправлена в CGI-скрипт. В сети нет ничего о том, как это сделать, что я могу найти, iv потратил несколько дней. Я знаю, что есть несколько человек, которым это нужно, это может помочь нам всем, у кого есть устаревшие скрипты 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;  
}  
}  
?>
 

Post вызов примера CGI:

 foobar.com/index.cgi?act=storeamp;data=$filename
 

Любые предложения очень помогли бы. Спасибо.

Комментарии:

1. доступен ли скрипт CGI через HTTP (браузер)?

2. Да, это так! он может быть доступен локально и NAT.

Ответ №1:

Насколько я понимаю, ваш 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;  
    }  
}  

?>
 

Вы можете выполнить скрипт cgi через CURL POST и передать любые параметры, которые вы хотите

Комментарии:

1. Я. Это полностью имеет смысл, я пытаюсь сейчас, я буду держать вас в курсе. Большое вам спасибо…

2. Итак, теперь, когда я понимаю ваш скрипт, мой cgi немного сложнее, чем просто удаление файла в хранилище. Сообщение должно быть обработано ?act=store это запускает другой скрипт, который обрабатывает данные.

3. есть ли другой способ, который вы можете придумать? еще раз спасибо.