cURL下载图像不是图像

时间:2013-11-27 17:31:53

标签: php curl filepicker.io

我正在通过curl从filepicker.io下载图像。这是下载代码:

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);

        }

由于某种原因,下载的文件是图像,例如'palm-tree.jpeg',但它实际上并未存储为图像。图像文件中没有添加标题信息。当我在我的Mac上使用获取信息打开图像时,预览正确呈现但文件类型列为文档。我做错了吗?

编辑:现在添加了完整的代码,包括压缩

1 个答案:

答案 0 :(得分:1)

卸下:

fwrite($fp, $data);

当您使用CURLOPT_FILE时,cURL会将结果写入文件,您无需亲自执行此操作。 $data包含true,您将其附加到文件中(实际上您将1附加到文件中,因为您正在将true转换为字符串你写的。)