2017-02-01 32 views
1

Мне нужно создать файл .PNG из файла, который я загружаю curl_setopt().
Будет создан .PNG, только его больше не читать.
Значит, у меня есть то, что у $rawdata нет подходящего контента.Получить файл curl_setopt() и записать его как .PNG

// Function to download a file (needed in one of the programming missions) 
function htsGetFile($url, $filename) { 
    $cookiefile = "cookie.txt"; 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0'); 

    curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
    curl_setopt($ch, CURLOPT_REFERER, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); // Cookiejar on creation, cookiefile on use 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // We need tot get the data back. 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //Will not check the ssl sertification. 

    $rawdata = curl_exec($ch); 

    if(file_exists($filename)){ 
     unlink($filename); 
    } 

    $fp = fopen($filename, 'wb'); 
    fwrite($fp, $rawdata); 
    fclose($fp); 

    if(curl_errno($ch)) { 
     return false; 
    } else { 
     return $rawdata; 
    } 
    curl_close ($ch); 
} 




$username = "*******"; 
$password = "*******"; 

$url = "https://www.domain/path/"; 
$file = "download.png";  

if (htsLogin($username, $password)) 
    if (htsGetHTML($url) !== false) 
     if (htsGetFile($url, $file) !== false) 
      $img = htsGetFile($url, $file); 
     else 
      echo 'Getting file went wrong.'; 
    else 
     echo 'Getting page went wrong.'; 
else 
    echo 'Can\'t login.'; 
+0

Проверьте содержимое 'png' в тоже вроде Notepad ++, чтобы увидеть, что происходит. – JustOnUnderMillions

+0

@JustOnUnderMillions, я сделал, у меня есть изношенный текст, я думаю, они называют его двоичным кодом. но я вижу такие вещи, как фон границы, черный с текстом в нем с NULL – LenapCapo

+1

Может быть, добавьте 'curl_setopt ($ ch, CURLOPT_HEADER, 0);' посмотрите здесь http://stackoverflow.com/questions/6476212/save-image- from-url-with-curl-php – JustOnUnderMillions

ответ

0

Попробуйте file_put_contents($file_name, $rawdata) вместо

$fp = fopen($filename, 'wb'); 
fwrite($fp, $rawdata); 
fclose($fp); 

или base64_encode($rawdata) в обоих вариантах

+0

Что вы имеете в виду: 'или base64_encode ($ rawdata) в обоих вариантах' – LenapCapo

+0

, если файл будет разбит try' file_put_contents ($ file_name, base64_encode ($ rawdata)); ' – questlooking