我正在通过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上使用获取信息打开图像时,预览正确呈现但文件类型列为文档。我做错了吗?
编辑:现在添加了完整的代码,包括压缩
答案 0 :(得分:1)
卸下:
fwrite($fp, $data);
当您使用CURLOPT_FILE
时,cURL会将结果写入文件,您无需亲自执行此操作。 $data
包含true
,您将其附加到文件中(实际上您将1
附加到文件中,因为您正在将true
转换为字符串你写的。)