【发布时间】:2016-04-04 16:42:35
【问题描述】:
我制作了一个脚本,根据请求,服务器将返回一个特定文件以从外部源下载,我使用外部源,因为我在另一台服务器上拥有无限带宽:
$ch = curl_init();
$url="http://www.example.com/downloads/$fileName";
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true); // make it a HEAD request
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$head = curl_exec($ch);
$mimeType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: $mimeType");
header("Content-length: $size");
header("Content-Transfer-Encoding: binary");
header("Content-Disposition:attachment;filename='$fileName'");
readfile($url);
$filename 来自前端的请求。这是来自表单的简单帖子。
一切都很好,但有些用户(不是全部)报告说他们无法打开文件,因为文件名有引号:'filename.zip',而不是filename.zip
我碰壁了,我什至不知道从哪里开始寻找,显然这发生在一些 mac 用户身上。有什么想法吗?
【问题讨论】:
-
嗯,那是因为你在倒数第二行加上了引号。
:I -
我认为这些是必要的。
-
我们都猜对了一半,you need double quotes。请参阅 Mike 的回答。
-
是的,我在回复之前正在测试它。谢谢!
标签: php curl download http-headers