2012-05-09 4 views
0

Я пытаюсь загрузить файл gzip с помощью curl и php и сохранить его в указанном месте. Ниже приведен код, который я использую, но каждый раз, когда он спасает пустой файл Allthough файла GZIP, что это скачивает собственноскачать и сохранить файл gzip с помощью php curl

$file_zip = 'abc.gz' 
$fp = fopen("$file_zip", "w"); 
$request = curl_init(); 
$headers = array('Content-type: application/x-gzip','Connection: Close'); 
curl_setopt($request, CURLOPT_URL, $url); 
curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($request, CURLOPT_TIMEOUT, 0); 
curl_setopt($request, CURLOPT_CONNECTTIMEOUT,0); 
curl_setopt($request, CURLOPT_HTTPHEADER,$headers); 
curl_setopt($request, CURLOPT_FAILONERROR, true); 
curl_setopt($request, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($request, CURLOPT_AUTOREFERER, true); 
curl_setopt($request, CURLOPT_BINARYTRANSFER,true); 

curl_setopt($request, CURLOPT_FILE, $fp); 

$zipFile = curl_exec($request); 
+0

вы использовали 'копия()'? есть ли специальная причина использовать cURL? –

+0

Фактически, фактический файл генерируется в каком-то временном месте от моего основного контроллера (URL-адрес которого указан как curl url), и этот конкретный сценарий php подбирает его и в конечном итоге загружает на внешний ftp-сервер. – debaShish

+0

Хорошо, что, если вы не используете заголовки? например '$ headers = 0;'? –

ответ

2

Я нашел способ, который загружает файл в папку с завитком. Надеюсь, что это помогает:

<?php 
function get_file1($file, $local_path, $newfilename) 
{ 
    $err_msg = ''; 
    echo "<br>Attempting message download for $file<br>"; 
    $out = fopen($newfilename, 'wb'); 
    if ($out == FALSE){ 
     print "File not opened<br>"; 
     exit; 
    } 

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_FILE, $out); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_URL, $file); 

    curl_exec($ch); 
    echo "<br>Error is : ".curl_error ($ch); 

    curl_close($ch); 
    //fclose($handle); 

}//end function 
?> 

Источник является: http://www.weberdev.com/get_example.php3?ExampleID=4009

+0

Спасибо @tpaksu, но мой звонок и создание файлового архива работает по-разному. Фактически, вызов curl для контроллера генерирует 3 отдельных отчета (в формате csv), а затем эти отчеты gzip как tar-мяч во временный файл, а затем выгружаются в качестве ответа к моему звонку, используя проход thru(). Как только файл выйдет из строя, временный файл gzipped будет удален. – debaShish

+0

Хорошо, но вот что, бэкэнд создаст gzip и сохранит во временное место как файл, после того, как выкроется завиток, после завершения создания файла верните строку из бэкэнд, и завиток закончится в это время, возвращая выведенную string, то вы проверите строку и скопируйте файл в свое местоположение с помощью copy(). curl будет указывать только серверу, чтобы создать файл и вернуть некоторую строку после завершения создания. –

+0

Но whatif мой файл gzip создается на другом сервере alltogether, чем сервер, на котором работает мой скрипт curl. Будет ли копировать() работу для удаленных файлов? – debaShish

Смежные вопросы