【发布时间】:2019-02-25 01:12:32
【问题描述】:
我最近遇到了一个代码问题,该代码运行良好,但随后开始在文件名周围包含引号。
我们最近将服务器升级到 PHP 7.2,并认为这可能是导致更改的原因,但想看看是否有人可以确定。
我们正在使用 PHP 7.2 的 Ubuntu 服务器上运行 Laravel 5.5 应用程序,并且已观察到在 Chrome(我们使用的主要浏览器)中可以正常工作并且不再工作
以下代码运行了几个月:
$file = Storage::disk('s3')->get($location);
$headers = [
'Content-Type' => 'xml',
'Content-Description' => 'File Transfer',
'Content-Disposition' => "attachment; filename='" . $realName . "'",
'filename'=> $realName
];
return response($file, 200, $headers);
这样可以很好地下载 example.xml
但它最近开始下载“example.xml”,要求我删除对此的引号:
$file = Storage::disk('s3')->get($location);
$headers = [
'Content-Type' => 'xml',
'Content-Description' => 'File Transfer',
'Content-Disposition' => 'attachment; filename=' . $realName,
'filename'=> $realName
];
return response($file, 200, $headers);
我发现这个问题与多种文件类型有关,因此与文件类型无关。
我只是想找出这个问题的原因,特别是因为引号是我理解的向后浏览器兼容性所需要的。
** 更新**
我找到了这个相关的问题,但它没有回答我所追求的问题:
PDF downloads surrounded by single quotes?
** 更新 2 **
我已经在多个浏览器上测试了 signle 引号,它不适用于 Chrome 和 Firefox,但可以在当前版本的 Internet Explorer 和 Edge 上使用。
【问题讨论】:
-
$file 是路径还是 File 对象? $realName 的价值是多少?
-
抱歉 $file 是文件对象,我将其添加到代码中
-
单引号永远无效。你应该使用双引号。 developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
-
@lufc 感谢分享。我在这里使用了大学代码并且正在工作,所以在它停止工作之前没有三思而后行
-
没有问题。我怀疑是浏览器更新导致它停止工作。
标签: php laravel download http-headers