如何设置从浏览器下载的文件名?

新手上路,请多包涵

我正在编写一个 Web 应用程序,除其他外,它允许用户将文件上传到我的服务器。为了防止名称冲突和组织文件,我将它们放在我的服务器上后重命名。通过跟踪原始文件名,我可以与文件所有者进行通信,而他们根本不知道我在后端更改了文件名。也就是说,直到他们去下载文件。在这种情况下,系统会提示他们下载名称不熟悉的文件。

我的问题是,是否有任何方法可以仅使用 HTML 指定要下载的文件的名称?因此,用户上传了一个名为“abc.txt”的文件,我将其重命名为“xyz.txt”,但是当他们下载它时,我希望浏览器默认将文件保存为“abc.txt”。如果仅使用 HTML 无法做到这一点,有什么办法可以做到吗?

原文由 Sparafusile 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

在 HTML 中找不到方法。我认为您需要一个服务器端脚本来输出内容配置标头。在 php 中,这是这样完成的:

 header('Content-Disposition: attachment; filename="downloaded.pdf"');

如果您希望提供默认文件名,但不自动下载,这似乎可行。

 header('Content-Disposition: inline; filename="filetodownload.jpg"');

事实上,它是直接为您的文件提供服务的服务器,因此您无法通过 HTML 与它交互,因为根本不涉及 HTML。

原文由 Palantir 发布,翻译遵循 CC BY-SA 4.0 许可协议

当他们点击按钮下载文件时,您可以添加 HTML5 属性 download 您可以在其中设置默认文件名。

这就是我所做的,当我创建一个 xlsx 文件并且浏览器想要将它保存为 zip 文件时。

 <a href="path/to/file" download="renamed.txt">Download</a>
<a href="downloads/export.xlsx" download="Data-Export.xlsx">Download Export</a>

原文由 Mephiztopheles 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题