首页 > 解决方案 > 给定 URL 时的 HTML 文件输入命名

问题描述

我们的网页上有一个非常标准的文件选择器,定义如下:

<input type="file" multiple="" accept=".csv,.json,.zip,.jpg,.jpeg,.bmp,.png,.gif,image/*">

这适用于选择本地文件,但我们发现如果用户将 URL 粘贴到“文件名”字段中,浏览器(chrome 和 firefox 测试)会将该 URL 下载到临时文件并设置结果文件选择器到该临时文件。

看起来该临时文件的名称仅基于给定的 URL;也就是说,一个 URL likehttp://server/path/download?id=123将产生一个名称“download”,而一个 URL likehttp://server/path/123.jpg将产生一个名称“123.jpg”,而不管响应中定义的任何标题(例如content-disposition)。

所以我的问题:

  1. 这种行为是否记录在某处?我在 MDN 中找不到。
  2. 是否可以禁用此功能以仅允许从本地文件系统中进行选择?
  3. 有没有办法控制 URL 以外的文件名?

标签: htmlinput-type-file

解决方案


事实证明,我认为这种行为实际上来自操作系统(Windows 10),而不是浏览器对话框,因为我可以使用其他应用程序重现相同的行为。例如,在 Eclipse 中,我可以在文件打开对话框中粘贴 URL,它们在 Eclipse 中以相同的命名方案打开。我还尝试了其他一些操作系统,正如预期的那样,对话框是由操作系统提供的,所以在某些情况下甚至没有办法输入 URL。


推荐阅读