<input type="file"> 标签详解
阅读原文时间:2023年07月08日阅读:2

详见:https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#attr-multiple

使用 type="file" 的 <input> 元素使得用户可以选择一个或多个元素以提交表单的方式上传到服务器上,或者通过 Javascript 的 File API 对文件进行操作。

除了被所有 <input> 元素共享的公共属性,file 类型的 input 还支持下列属性:

属性

说明

[accept](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#accept)

一个或多个 unique file type specifiers 描述允许的文件类型

[capture](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#capture)

捕获图像或视频数据的源

[files](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#files)

FileList 列出了已选择的文件

[multiple](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#multiple)

布尔值,如果出现,则表示用户可以选择多个文件

accept

[accept (en-US)](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept) 属性是一个字符串,它定义了文件 input 应该接受的文件类型。这个字符串是一个以逗号为分隔的 唯一文件类型说明符 列表。由于给定的文件类型可以用多种方式指定,因此当你需要给定格式的文件时,提供一组完整的类型指定符是非常有用的。

例如,有许多方法可以识别 Microsoft Word 文件,所以接受 Word 文件的站点可以使用一个<input>

<input type="file" id="docpicker"
  accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document">

capture

capture (en-US) 属性是一个字符串,如果 [accept (en-US)](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept) 属性指出了 input 是图片或者视频类型,则它指定了使用哪个摄像头去这些数据。值 user 表示应该使用前置摄像头和/或麦克风。值 environment 表示应该使用后置摄像头和/或麦克风。如果缺少此属性,则 user agent 可以自由决定做什么。如果请求的前置模式不可用,则用户代理可能退回到其首选的默认模式。

Note: capture 以前是一个布尔类型的属性,如果存在,则请求使用设备的媒体捕获设备(如:摄像机),而不是请求一个文件输入。

files

FileList 对象每个已选择的文件。如果 multiple 属性没有指定,则这个列表只有一个成员。

multiple

当指定布尔类型属性 multiple (en-US), 文件 input 允许用户选择多个文件。

唯一文件类型说明符是一个字符串,表示在 file 类型的 <input> 元素中用户可以选择的文件类型。每个唯一文件类型说明符可以采用下列形式之一:

  • 一个以英文句号(".")开头的合法的不区分大小写的文件名扩展名。例如: .jpg.pdf 或 .doc
  • 一个不带扩展名的 MIME 类型字符串。
  • 字符串 audio/*, 表示“任何音频文件”。
  • 字符串 video/*,表示 “任何视频文件”。
  • 字符串 image/*,表示 “任何图片文件”。

accept 属性的值是一个包含一个或多个(用逗号分隔)这种唯一文件类型说明符的字符串。 例如,一个文件选择器需要能被表示成一张图片的内容,包括标准的图片格式和 PDF 文件,大概是这样的:

<input type="file" accept="image/*,.pdf">

限制可接受的文件类型

通常,你不希望用户能够选择任意类型的文件;相反,你通常希望它们选择特定类型的文件。例如,如果你的文件输入让用户上传个人资料图片,您可能希望他们选择 Web 兼容的图像格式,如 JPEG 或 PNG

可以用 accept 属性指定可接受的文件类型,它是一个以逗号间隔的文件扩展名和 MIME 类型列表。一些例子:

  • accept="image/png" 或 accept=".png" — 接受 PNG 文件。
  • accept="image/png, image/jpeg" 或 accept=".png, .jpg, .jpeg" — 接受 PNG 或 JPEG 文件。
  • accept="image/*" — 接受带有一个 image/* MIME 类型的任何文件。(许多移动设备也允许用户在使用它时用摄像头拍照。)
  • accept=".doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" — 接受 MS Word 文档之类的任何文件。