繁体   English   中英

使用 url 和 php 中的 curl 自动下载损坏的图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM