【问题标题】:Chrome adds "-, attachment" to downloaded fileChrome 在下载的文件中添加“-,附件”
【发布时间】: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


【解决方案1】:

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

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

这为我解决了问题。 -戴夫

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2014-02-12
    • 1970-01-01
    • 2021-01-28
    • 2015-03-28
    相关资源
    最近更新 更多