2013-11-27 5 views
1

Я загружаю изображение через curl из файла filepicker.io. Вот код загрузки:cURL Загрузить изображение не изображение

if ($_GET['download']== 'true'){ 
      $downloadarray = array(); 
      while($row = mysql_fetch_array($res)){ 
      $url= $row['loc']; 
      $path = 'tmp/'; 
      $path .= rand(100,999); 
      $path .= $row['name']; 
      $fp = fopen($path, 'w'); 
      $ch = curl_init($url); 
      curl_setopt($ch, CURLOPT_FILE, $fp);  
      $data = curl_exec($ch);  
      curl_close($ch); 
      fclose($fp); 
      echo print_r($data); 
      $downloadarray[] = array($path, $row['name']); 
      } 


     $zipname = rand(0,9999) . 'download.zip'; 
      $zip = new ZipArchive; 
      $zip->open($zipname, ZipArchive::CREATE); 
      foreach ($downloadarray as $file) { 
      $zip->addFile($file['0'], $file['1']); 

      } 
      $zip->close(); 
      header('Content-Type: application/zip'); 
      header('Content-disposition: attachment; filename=' . $zipname); 
      header('Content-Length: ' . filesize($zipname)); 
      readfile($zipname); 
      unlink($zipname); 

     } 

По какой-то причине загруженный файл изображения, например, «ладонь tree.jpeg», но это не на самом деле хранится в виде изображения. В файле изображения отсутствует информация заголовка. Когда я открываю изображение с помощью Get Info на моем mac, предварительный просмотр правильно отображает, но тип файла указан как Документ. Я делаю что-то неправильно?

EDIT: Теперь добавлен полный код, включая проносясь

ответ

1

Снимите:

fwrite($fp, $data); 

При использовании CURLOPT_FILE, Curl записывает результаты в файл, вам не нужно делать это самостоятельно. $data содержит true, и вы добавляете это в файл (на самом деле вы добавляете файл 1 в файл, так как вы конвертируете true в строку при ее записи).

+0

Сделано это, но zip-файл теперь поврежден, добавлен почтовый индекс в OQ. –

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