在浏览器中操作文件,多数情况下用到的是 File 对象,从<input type='file' />元素获取,进而继续操作(例如将选择的图片展示在页面上,用ajax将文件上传至服务器等)。这里介绍在浏览器中操作文件的相关API.

File 对象继承自 Blob 对象,先看看 Blob 对象。

1. Blob 对象

Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定是JavaScript原生格式的数据。

Blob构造函数 Blob(array[, options])

  • array 是一个由ArrayBuffer, ArrayBufferView, Blob, string 等对象构成的 Array ,或者其他类似对象的混合体,它将会被放进 Blob。string会被编码为UTF-8。
  • options 是一个可选的对象,它可能会指定如下两个属性:
    • type,默认值为 “”,它代表了将会被放入到blob中的数组内容的MIME类型。
    • endings,默认值为"transparent",用于指定包含行结束符\n的字符串如何被写入。 它是以下两个值中的一个: “native”,代表行结束符会被更改为适合宿主操作系统文件系统的换行符,或者
      “transparent”,代表会保持blob中保存的结束符不变。

示例:

methods: {
    files() {
      var content1 = ["This is my firt trip to an island"];
      var blob1 = new Blob(content1, { type: "text/plain" });
      var content2 = { name: "Alice", age: 23 };
      var blob2 = new Blob([JSON.stringify(content2, null, 2)], {
        type: "application/json"
      });
      console.log(blob1, 1); // Blob {size: 33, type: "text/plain"}size: 33type: "text/plain"__proto__: Blob 1
      console.log(blob2, 2); // Blob {size: 34, type: "application/json"} 2
    }
  }

属性名称

Blob实例属性

属性名称读/写描述
size只读Blob 对象中所包含数据的大小(字节)。
type只读一个字符串,表明该Blob对象所包含数据的MIME类型。如果类型未知,则该值为空字符串。例如 “image/png”.

2. File 对象

File构造函数

我们接触的多数关于 File 的操作都是读取,js也为我们提供了手动创建 File 对象的构造函数:File(bits, name[, options])。

  • bits (required) ArrayBuffer,ArrayBufferView,Blob,或者 Array[string] —
    或者任何这些对象的组合。这是 UTF-8 编码的文件内容。。
  • name [String] (required) 文件名称,或者文件路径.
  • options [Object] (optional) 选项对象,包含文件的可选属性。可用的选项如下:
    • type: string, 表示将要放到文件中的内容的MIME类型。默认值为 ‘’ 。
    • lastModified: 数值,表示文件最后修改时间的 Unix 时间戳(毫秒)。默认值为 Date.now()。

示例:

var file1 = new File(['text1', 'text2'], 'test.txt', {type: 'text/plain'});

根据已有的 blob 对象创建 File 对象:

var file2 = new File([blob], 'test.png', {type: 'image/png'});

File实例属性

File 对象的实例内容不可见,但是有以下属性可以访问:

属性名称读/写描述
name只读返回文件的名称.由于安全原因,返回的值并不包含文件路径 。
type只读返回 File 对象所表示文件的媒体类型(MIME)。例如 PNG 图像是 “image/png”.
lastModified只读number, 返回所引用文件最后修改日期,自 1970年1月1日0:00 以来的毫秒数。
lastModifiedDate只读Date, 返回当前文件的最后修改日期,如果无法获取到文件的最后修改日期,则使用当前日期来替代。
size只读File 对象中所包含数据的大小(字节)。

在这里插入图片描述
示例:

template

<input type="file" ref="file" value="file" @change="chang" />

methods

chang () {
   	  console.log(this.$refs.file.files[0]);
   }
/**
	File {name: "MinerInfo.vue - android - Visual Studio Code 2020_11_24 10_49_12.png", lastModified: 1606186152444, lastModifiedDate: Tue Nov 24 2020 10:49:12 GMT+0800 (中国标准时间), webkitRelativePath: "", size: 137573, …}
	lastModified: 1606186152444
	lastModifiedDate: Tue Nov 24 2020 10:49:12 GMT+0800 (中国标准时间) {}
	name: "MinerInfo.vue - android - Visual Studio Code 2020_11_24 10_49_12.png"
	size: 137573
	type: "image/png"
	webkitRelativePath: ""
	__proto__: File
*/

更多…

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐