【问题标题】:Error 404 for file download without browser redirection?没有浏览器重定向的文件下载错误 404?
【发布时间】:2013-07-26 18:41:37
【问题描述】:

我在一个网站上显示指向 PDF 文件的链接。 当文件的第一次调用到达时,请求被重定向到生成并返回文件的 php 脚本。此外,它会将文件保存到链接位置,以便下次直接使用。我发送 pdf mime type 以使浏览器打开 下载对话框而不是重定向

由于我无法控制的原因,无法生成 20 个文件中的一个。

如何应对?

错误 404 或 500 会将浏览器引导至错误页面,而发送 mime-type 将使用户下载空的/有缺陷的 pdf 文件。是否有既定的最佳实践?如何让用户知道文件链接已损坏,但仍让他留在网站上而不重定向?

【问题讨论】:

  • 对我来说 404 最有意义 - 无法生成文件(您可以自定义 404 错误页面以反映这一点),因此无法找到。
  • @GermannArlington 感谢您的评论。然而它并没有解决重定向问题。
  • 哪个重定向问题?第一次尝试重定向到生成脚本?附言如果用户安装了 pdf 插件,发送 pdf mime 类型不会提示用户“saveAs”,如果您想强制“saveAs”提示,您需要发送 UNKNOWN mime type。
  • 感谢您对未知类型的提示!我要求最佳实践解决方案的情况是我不希望用户被重定向(如果下载链接有效,他不会被重定向。)所以我总是可以发送一些数据以避免重定向,但这会结束在有缺陷的 pdf 中。

标签: http-headers http-status-code-404 mime-types


【解决方案1】:

我遇到了同样的问题,解决方法如下:

如果您有文件链接,例如:

<a download href="/files/document.pdf">Click to download</a>

如果您不希望浏览器在文件不存在的情况下重定向到空白/错误页面,只需回复 204 而不包含任何内容。

什么都不会发生,用户将留在原地而不会重定向。

在 php 中它看起来像这样:

if (!readfile("/files/document.pdf") {
    http_response_code(204);
    die();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 2015-08-19
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    相关资源
    最近更新 更多