File

 文件(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 的方法来代替。

相关链接

文档标签和贡献者