Получение файла через CURL Posting Data - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть веб-сервис, на который вы публикуете данные, и он возвращает вам файл txt.gz.Я пытаюсь использовать cURL для публикации информации, однако я не уверен, как быть готовым и обработать файл, который возвращается мне для загрузки.

Я получаю успешный ответ;но файл 0 КБ, и, очевидно, не загружается.Любая помощь будет принята с благодарностью!

Вот что я сейчас делаю:

$url = 'http://www.mywonderfulurl.com';
$fields = array('id'=>'123');
$fields_string = 'id=123';
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";

$ch = curl_init();

// set user agent
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

curl_setopt($ch, CURLOPT_TIMEOUT, 250);
curl_setopt($ch, CURLOPT_FILE, 'download.txt.gz');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    if (file_put_contents('download.txt.gz', curl_exec($ch)) === false) {
        // Handle unable to write to file error.
        echo('you failed');
        exit;
    }



echo curl_getinfo( $ch, CURLINFO_HTTP_CODE );
//close connection
curl_close($ch);

1 Ответ

0 голосов
/ 22 февраля 2011

Вы никогда не пишете в файл.

Вам нужно записать результат в файл.

fwrite($fp, $result);

Возможно, вам лучше использовать file_put_contents, тогда вам не нужно открывать / закрывать файл.

http://php.net/manual/en/function.file-put-contents.php

if ($file_put_contents('download.txt.gz', curl_exec($ch)) === false) {
    // Handle unable to write to file error.
}

Но, возможно, с помощью промежуточного значения $ result для проверки запроса на самом деле все в порядке, прежде чем сохранять его в файл.

Вы должны проверить возврат от curl_exec()

$result = curl_exec($ch);
if ($result === false) {
    echo 'Curl error: ' . curl_error($ch);
}

Запись false в файл приведет к пустому файлу, так что это может произойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...