Я новичок в cURL, и у меня есть проблема с тем, чтобы заставить ее работать. Мне нужно отправить некоторые параметры, а также загрузить файл в веб-форму. Соответствующая веб-форма возьмет файл и входные параметры и преобразует файл в другой формат. При непосредственном использовании этой веб-формы отправьте перенаправления на новую страницу, на которой отображается индикатор выполнения, показывающий ход преобразования файла. По завершении появится ссылка для загрузки.PHP cURL: curl_exec к веб-форме, которая перенаправляет
Что мне нужно сделать, это отправить файл (с параметрами), дождаться завершения преобразования, загрузить файл и продолжить мой PHP-код, который обрабатывает загруженный файл. Тем не менее, мне трудно работать с cURL, и я не уверен, связано ли это с перенаправлением на страницу с индикатором выполнения. Пример кода ниже:
$full_file_path = realpath($inputfile);
$data = array('param1' => '1', 'param2' => '2', 'file' => '@'.$full_file_path);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com/Converter/index.pl');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
#get converted file
$file_head=substr($inputfile, 0, strpos($inputfile, '.raw'));
$output_file=$file_head.".mzXML";
$url="http://example.com/Converter/temp/".$output_file;
$fp = fopen ($output_file, 'w+');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
curl_close($ch);
Начальный экземпляр $ response возвращает пустую веб-форму. Я не получаю ошибок с curl_error и curl_getinfo. Я вижу, что я правильно подключаюсь к серверу, однако процесс преобразования файлов должен занимать ~ 5 минут, пока процесс завивки завершается в < 1 сек. Я не уверен, что происходит неправильно или как получить больше информации, чтобы рассказать мне, что происходит. Я думаю, что это связано с перенаправлением, но я не знаю точно.
Любая помощь очень ценится.
РЕДАКТИРОВАТЬ
Вот выход из CURLOPT_VERBOSE
- Добавление ручки: сопп: 0x7fa754818000
- Добавление ручки: отправить: 0
- Добавление ручки: RECV: 0
- Curl_addHandleToPipeline: длина: 1
- Conn 16 (0 x7fa754818000) send_pipe: 1, recv_pipe: 0
- О для подключения() к example.com порт 80 (# 16)
- Попытка XX.XXX.XXX.XXX ...
- Подключение к example.com (XX.XXX.XXX.XXX) порт 80 (# 16)
- POST /Converter/index.pl HTTP/1.1
- Хост: example.com
- Accept: /
- Content-Length: 249010577
- Ожидаем: 10 0-continue
Content-Type: multipart/form-data; граница = ---------------------------- 52f3c644b6de
HTTP/1.1 100 Continue
- HTTP/1.1 200 OK
- Дата: Пт, 1 мая 2015 14:01:17 GMT
- Сервер Apache/2.2.22 (Win32) не занесен в черный список
- Сервер: Apache/2.2.22 (Win32)
- Кодировка: chunked
Content-Type: text/html; кодировка = ISO-8859-1
Подключение # 16 для размещения example.com остается нетронутым
Попробуйте добавить 'CURLOPT_VERBOSE', чтобы получить больше информации о том, что делает Curl – dan08
спасибо Дэну. Я не думаю, что я получаю много от этого, хотя снова, так как я этого не делал, прежде чем я не уверен, чего ожидать. – James
Я опубликовал результаты в приведенном выше правиле. – James