php如何直接将远程获取的文件发送给ajax请求来下载?
我通过ajax请求php下载一个文件,php需要先远程下载该文件,再将该文件发送给浏览器,并使浏览器下载此文件。
在常规的php发送文件的方法中,需要先把文件存在服务端的硬盘上,然后通过readfile($filePath);来把文件发送给浏览器下载。
这样的实现我做出来了,但现在我想试试不把php下载的文件保存在硬盘里,而是直接发送给浏览器。但这样又不会触发浏览器下载。
现在的示例代码如下:
// 获取图片
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_GET["url"]);
curl_setopt($ch, CURLOPT_REFERER, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$cexecute = curl_exec($ch);
curl_close($ch);
//设置header
header('Content-Type: image/webp');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Length:'.strlen($cexecute));
// 输出图片
echo $cexecute;
不过这样不行。这样输出图片的话,图片数据只会被保存在ajax的responseText里面,不会触发浏览器下载。
不知道有办法实现这个想法吗?谢谢大家~ ^_^
ps:如果不使用ajax,而是将这个php+参数的url作为iframe的src的话,是可以触发文件下载的。但是这样一来没法监控iframe的加载状况(比如iframe的onload事件不会触发),因此也没有采用。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论