我想从服务器上下载图像而不单击任何内容-当我的php文件执行时,它将自动下载,但是问题是文件已损坏。但是,当我直接将URL粘贴到浏览器中并下载时,它可以完美运行。那么,为什么我的下面的实现不起作用?有任何想法吗?
这是我的代码:
$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);
答案 0 :(得分:0)
参考发布在php - How to force download of a file?
上的答案不是使用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;
答案 1 :(得分:0)
大家好,感谢您的帮助,但是我使用了这个非常简单的代码,而不是我自己解决了卷曲问题。
$ 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));
非常感谢大家!
答案 2 :(得分:0)
这对我有用。
$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);