[英]Corrupted image on auto download using url with curl in php
我想从我的服务器下载图像而不点击任何东西 - 当我的 php 文件执行时,它会自动下载,但问题是文件已损坏。 但是,当我将网址直接粘贴到浏览器中并下载时,它运行良好。 那么为什么我下面的实现不起作用? 关于这个的任何想法?
这是我的代码:
$url_to_image = 'https://hideserver.com/axul-display/assets/ads/';
$ch = curl_init($url_to_image);
$my_save_dir = 'assets/ads/';
$filename = basename($url_to_image.'ads-id-4.gif');
$complete_save_loc = $my_save_dir . $filename;
$fp = fopen($complete_save_loc, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, FALSE);
curl_exec($ch);
curl_close($ch);
fclose($fp);
大家好,感谢您的帮助,但我解决了我自己的问题,而不是 curl 我使用了这个非常简单的代码。
$image_url = ' http://server ***.com/axul-display/assets/ads/ads-id-4.gif';
file_put_contents('assets/ads/ads-id-4.gif', file_get_contents($image_url));
非常感谢大家!
参考php 上发布的答案- 如何强制下载文件?
而不是 curl 调用使用标头下载文件。
$file_name = 'ads-id-4.gif';
$file_url = 'https://hideserver.com/axul-display/assets/ads/' .
$file_name;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"".$file_name."\"");
readfile($file_url);
exit;
这对我有用..
$ch = curl_init($url);
if (in_array($type, ['jpg', 'jpeg','png'])) {
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYSTATUS, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 400);
curl_setopt($ch, CURLOPT_FILE, fopen($temp_path, 'wb'));
curl_exec($ch);
$info = curl_getinfo($ch);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.