文件(File)
接口提供有关文件的信息,并允许网页中的 JavaScript 访问其内容。
通常情况下, File
对象是来自用户在一个 <input>
元素上选择文件后返回的 FileList
对象,也可以是来自由拖放操作生成的 DataTransfer
对象,或者来自 HTMLCanvasElement
上的 mozGetAsFile
() API。在Gecko中,特权代码可以创建代表任何本地文件的File对象,而无需用户交互(有关详细信息,请参阅注意事项。
File
对象是特殊类型的 Blob
,且可以用在任意的 Blob 类型的 context 中。比如说, FileReader
, URL.createObjectURL()
, createImageBitmap()
, 及 XMLHttpRequest.send()
都能处理 Blob
和 File
。
参考 从Web应用程序使用文件 了解更多信息和例子。
构造函数
File()
- 返回一个新构建的文件对象(
File
)。
属性
File
接口也继承了 Blob
接口的属性:
File.lastModified
只读- 返回当前
File
对象所引用文件最后修改时间, 自 1970年1月1日0:00 以来的毫秒数。 File.lastModifiedDate
只读- 返回当前
File
对象所引用文件最后修改时间的Date
对象。 File.name
只读- 返回当前
File
对象所引用文件的名字。 File.size
只读- 返回文件的大小。
File.webkitRelativePath
只读- 返回
File
相关的 path 或 URL。
File.type
只读- 返回文件的 多用途互联网邮件扩展类型
方法
File
接口没有定义任何方法,但是继承了 Blob
接口的方法。
规范
规范 | 状况 | 注释 |
---|---|---|
File API | Working Draft | Initial definition |
浏览器兼容性
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 13 | (Yes) | 3.0 (1.9)[1] 7 (7) |
10.0 | 11.5 | 6.0 |
name |
? | (Yes) | 3.6 (1.9.2) | ? | ? | ? |
lastModifiedDate |
? | 未实现 | 15 (15) | ? | ? | ? |
webkitRelativePath |
(Yes) | (Yes) | 49 (49) | ? | (Yes) | (Yes) |
size | ? | ? | ? | ? | ? | ? |
Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | 未实现 | (Yes) | 1.0 (1.9)[1] 7.0 (7) |
未实现 | 11.1 | 6.0 |
name |
? | (Yes) | 1.0 (1.9.2) | ? | ? | ? |
lastModifiedData |
? | 未实现 | 15.0 (15) | ? | ? | ? |
webkitRelativePath |
(Yes) | (Yes) | 49.0 (49) | ? | (Yes) |
(Yes) |
size | ? | ? | ? | ? | ? | ? |
[1] 非标准实现
注意事项
- 在Gecko中,你可以从Chrome代码中使用这个API。参见 Using the DOM File API in chrome code 详细内容. 从Chrome代码中使用它, JSM 和引导范围, 你必须使用它导入它
Cu.importGlobalProperties(['File']);
- 从Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)开始,在特权代码(比如扩展中的代码)中,可以将一个
nsIFile
对象传入File
构造函数,从而生成一个 File 对象。 - 从Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5)开始,在 XPCOM 组件代码中,你可以直接使用
new File
来创建一个File
对象,而不需要像以前那样必须实例化一个nsIDOMFile
对象。File
对象和Blob
相反,使用第二个参数作为文件名。文件名可以是任意的字符串。new File( Array parts, String filename, BlobPropertyBag properties);
- 下面的非标准的属性及方法在 Gecko 7 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4) 里就被移除了:
File.fileName
,File.fileSize
,File.getAsBinary()
,File.getAsDataURL()
,File.getAsText(string encoding)
(bug 661876)。应该使用File.name
,Blob.size
, 和FileReader
的方法来代替。