【发布时间】:2013-11-19 00:47:11
【问题描述】:
我使用 Symfony2 框架并使用以下代码导出一个 xml 文件:
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'application/xml');
$response->headers->set('Content-Description', 'Submissions Export');
$response->headers->set('Content-Disposition', 'attachment; filename="' . $filename .'"');
$response->headers->set('Content-Transfer-Encoding', 'binary');
$response->headers->set('Pragma', 'no-cache');
$response->headers->set('Expires', '0');
我是否带走“Content-Transfer-Encoding”或“Pragma”或除“Content-Type”和“Content-Disposition”之外的所有这些都无关紧要。 Chrome 中的结果始终是:“文件名-,附件”(不带“)。 在 Firefox 中,这可以正常工作。
例如,如果我有一个名为 home.xml 的文件,Firefox 会下载 home.xml,而 Chrome 会下载 home.xml-,附件。
【问题讨论】:
-
据我所知,这是一个不同的问题。 Chrome 会将 \" 转换为 - (出于某种原因)是一个已知错误。也许它已经修复了。我认为我的问题与任何类型的转换无关。Chrome 似乎出于某种原因更改了文件名,无论我使用xml、pdf 或任何其他类型的文件。
-
据我所知,您的代码在文件名末尾还有一个引号。 IE; - $filename .'"' 。你为什么不删除引号并检查一次:)
-
我做过(很多次)。没有引号,只有“,\”,',\'等没有解决问题/创建(有趣的)新的(附加的)。
-
@Akshay 我明白了。你链接的那个帖子不是同一个问题,但它帮助我找到了解决方案。 “-”表示确实其中一个(“)正在被转换,而(,)表示某种“附加”文件。解决方案:在整个开发过程中,碰巧我发送了两次标题 -.- 谢谢: )
标签: php google-chrome symfony content-disposition force-download