2016-06-20 3 views
-1

У меня этот код в моем завитке: $ data_string = json_encode ($ data);скачать файл с PHP Curl

$ch = curl_init($url);                  
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);              
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                  
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json; charset=utf-8', 
    'User-Agent: '.$_SERVER['HTTP_USER_AGENT'], 
    'X-Forwarded-For: '.$this->getIp() 
));  

$result = curl_exec($ch); 
return $result; 

Я получаю этот giberish результат:

enter image description here

Я ожидаю файл изображения.

Вопрос в том, как загрузить этот файл изображения?

+1

Это ** - это файл изображения! Более конкретно, изображение в формате JPEG. –

+0

@ ÁlvaroGonzález Да, я хорошо знаю об этом. Вопрос: как я могу скачать этот? или, возможно, эхо-файл в мой браузер. – PinoyStackOverflower

ответ

5

вы можете использовать этот код

$profile_Image = $url; //image url 
$userImage = 'myimg.jpg'; // renaming image 
$path = ''; // your saving path 
$ch = curl_init($profile_Image); 
$fp = fopen($path . $userImage, 'wb'); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
$result = curl_exec($ch); 
curl_close($ch); 
fclose($fp); 
2

вы можете попробовать это:

$data=send_curl($url); 
$path='./test.jpg'; 
$file = file_put_contents($path,$data); 

функцию send_curl

function send_curl($url, $data, $PROXY = "") { 
    $ch = curl_init(); 
    if ($PROXY != "") { 
    curl_setopt ($ch, CURLOPT_PROXY, $PROXY); 
    } 
    curl_setopt ($ch, CURLOPT_URL, $url); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ch, CURLOPT_POST, 1); 
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    $result = curl_exec ($ch); 
    curl_close ($ch); 
    return $result; 
} 
0

В идеале, браузеры, как отображать данную часть содержимое с использованием информации HTTP-заголовка Content-Type, а PHP может генерировать заголовки HTTP с помощью header() функция.

Если вы точно знаете, что ваша картина всегда будет в формате JPEG это довольно просто:

header('Content-Type: image/jpeg'); 
echo your_download_function(); 
exit; 

В противном случае, вам нужно получить заголовок, возвращаемой удаленным сервером. Curl имеет сложный синтаксис - я отсылаю вас к PHP cURL retrieving response headers AND body in a single request?

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