【问题标题】:PHP: How do you change the name of the PDF when you download it from viewing in Chrome?PHP:当您从 Chrome 中查看下载 PDF 时,如何更改其名称?
【发布时间】:2017-01-25 02:40:28
【问题描述】:

我在使用 Chrome 时遇到问题,Chrome 的名称在下载时提供了 PDF。

按钮:

Chrome 读取的文件名:

点击下载按钮时的文件名:ControlFile.php

我已将其范围缩小到 Chrome PDF 查看器的问题。更改标题和 URL 栏无效。如果我禁用该插件,它会以正确的名称下载。

我一直无法找到更改生成的名称的方法。有人可以帮助我吗?

根据要求,这里是内容命名的代码:

header('content-type:application/pdf');
header('Content-Disposition: inline; filename='.$name . '.' . $format);
echo $output;

我使用headers_list() 在回显之前检查了标题。该问题仅适用于在屏幕上显示 PDF 并使用 chrome 中显示的按钮下载它们,而不是在不显示的情况下下载。

【问题讨论】:

  • 请在您命名文档的位置显示您的代码
  • @Christian - 这样的回答会强制下载文档。 OP 使用的是内联处置而不是附件,如果您希望内容在浏览器中呈现,并且仅在用户想要下载内容时才提供文件名,那么您就发送该附件。 Chrome 62 的 OP 代码没有问题,所以它一定是在过去一年中修复的。

标签: php google-chrome pdf


【解决方案1】:

只需将文件名添加到 URL 的末尾,它对我来说很好

例如:

ControlFile.php/Myfilename.pdf

【讨论】:

  • 如果你使用 NGinx,介意分享你用来指出 ControlFile.php 的规则吗?
【解决方案2】:

我认为您错过了引号和内容类型(附件):

header('Content-Disposition: attachment; filename="'.$name . '.' . $format.'"');

【讨论】:

  • 不完全。附件内容配置要求他们下载 PDF,我在另一段代码中有这个。像这样下载时的文件名正确显示。只有当他们想在保存之前查看文件时才会出现问题。
  • 如果访问者在保存之前看到文件,您需要什么样的文件名?他们看到的是网页,而不是文件。
  • 他们在网页上看到 PDF。文件名被正确读取(见上图,它由 Chrome PDF 查看器显示在页面上)。按下下载按钮时,名称和扩展名丢失,并尝试另存为 mainline.php。这只是 Chrome 的一个问题。 IE 和 FireFox 做的事情完全相同,只是正确而已。
猜你喜欢
  • 1970-01-01
  • 2018-09-20
  • 2022-09-27
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 2018-07-05
相关资源
最近更新 更多