7

我使用 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-,附件。

4

2 回答 2

3

我知道这是一个相当古老的讨论,但如果有人来这里寻求帮助,我确定 chrome 似乎想要在文件名末尾加一个分号,然后它很高兴。如(VBScript):

Response.AddHeader "Content-Disposition", "attachment;filename=Something.xls;"

那为我修好了。-戴夫

于 2015-03-23T15:48:55.027 回答
0

我在 ZEND 中遇到了同样的问题,因为我发现了很多不工作的东西,我想将我的 anwser 添加到这篇文章中。由于我花了一段时间来解决它,我认为更多的用户和开发人员会想知道我是如何解决它的。我在我的 fopen 调用之前添加了这个。

header('Content-Disposition: attachment; filename='.time().'.csv');

为我解决了这个问题。在我使用上下文切换之前,这是错误的,但现在它可以作为一种魅力。不要忘记删除以前的内容处置标头,因此您可能会收到双标头错误。

于 2016-02-17T15:17:38.340 回答