在浏览器中操作文件,多数情况下用到的是 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
                    在浏览器中操作文件,多数情况下用到的是 File 对象,从&lt;input type='file' /&gt;元素获取,进而继续操作(例如将选择的图片展示在页面上,用ajax将文件上传至服务器等)。这里介绍在浏览器中操作文件的相关API.File 对象继承自 Blob 对象,先看看 Blob 对象。1. Blob 对象Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定是JavaScript原生格式的数据。Blob构造函数 Blob(array[, options])ar
				
Javascript—-文件操作 一、功能实现核心:FileSystemObject 对象    要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。 二、FileSystemObject编程  使用FileSystemObject 对象进行编程很简单,一般要经过如下的步骤: 创建FileSystemObject对象、应用相关方法、访问对象相关属性 。  (一)创建FileSystemObject对象  创建FileSystemObject对象的代码只要1行:  var fso = new ActiveXObject(“Scripting.FileSy
利用FileReader的读取功能,完成后会触发onload事件,result属性即为base64编码 由于得到的base64编码基本会超过5M,所以需要对localStorage进行额外操作, 可以用localforage:优先使用IndexedDB存储,如果不支持,使用WebSQL,浏览器还不支持,使用localStorage 下载:https://github.com/localForage/localForage/releases // file为Fi
javascript 操作file文件 支持File API的浏览器有IE10+,Firefox3.5+,Opera10.6+,Safari5+,Chrome。 1.在表单元素上<input type="fiel" name="file" id="file"/>,可以选择一个或多个文件,通过获取文件元素对象的集合files,来操作每一个对象files[i]; 用法:DOM操作 var files=document.getElementById("file");   var file=files
一、功能实现核心:FileSystemObject 对象 要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。 二、FileSystemObject编程 使用FileSystemObjec...
支持File API的浏览器有IE10+,Firefox3.5+,Opera10.6+,Safari5+,Chrome。 1.在表单元素上<input type="fiel" name="file" id="file" />,可以选择一个或多个文件,通过获取文件元素对象的集合files,来操作每一个对象files[i]; 用法:DOM操作   var files=doc...
const fooFile = new File(['foo'], 'foo.txt', {type: ''text/plain}) // 得到一个内容是 foo 的 foo.txt文件 cosnt fooFIleUrl = URL.createObjectURL(fooFile) // 得到一个字符串"blob:https://developer.mozilla.org/578d33f2-b22e-488b-b94c-f6e78ae953cc" ...
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hYNfSzpQ-1576683821839)(http://images.pingan8787.com/blog/File_FileList_FileReader封面图.png)] 本文首发在我的【个人博客】 更多丰富的前端学习资料,可以查看我的 Github: 《Leo-JavaScript》,内容涵盖数据结构与算...
var operatorId = '123'; var formData = new FormData(); formData.append("file",$("#flieLoad").get(0).files[0]); //上传一个files对象 formData.append("operatorId", operat...
这个input控件的onchange事件中可以得到fileList对象,里面可以有多个file,然后利用下面的方法 ImageCropper.prototype.loadImage = function(file)     if(!this.isAvaiable() || !this.isImage(file)) return;     var reader = new FileR
目录一、Atomics和SharedArrayBuffer二、原子操作基础1、算术及位操作方法2、原子读和写3、原子交换4、原子Futex操作与加锁三、跨上下文消息四、Encoding API五、File API和Blob API1、File类型2、FileReader类型3、FileReaderSync类型4、Blob与部分读取六、Streams API1、应用场景2、理解流 一、Atomics和SharedArrayBuffer 多个上下文访问SharedArrayBuffer时,如果同时对缓冲区执行操
JS面对对象基础开篇我们先明确几个概念:构造函数:函数中的一种,通过关键字new可以创建其实例。为了便于区分,通常首字母大写;原型对象:一种特殊的对象,构造函数创建时即自动生成;与构造函数形成一一对应,如同人和影子般的关系;实例:通过构造函数new实例化出来的对象;创建对象的方式1】new 操作符 + Object 创建对象var person = new Object(); person.nam...
JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以创建单个对象,显然这两种方式会产生大量的重复代码,并不适合量产。接下来介绍七种非常经典的创建对象的方式,他们也各有优缺点。(内容主要来自于《JavaScript高级程序设计》,还参考了一下别人写的文章) 一、工厂模式 function createP...
_小彭同学_: 建立连接发送验证码 这一块的代码似乎有一点点问题。即使发送成功 也会执行 function(error, data) { assert(!error,500,"发送验证码错误!") transport.close(); // 如果没用,关闭连接池。 把这个删了吧 (uniapp)uQRCode 二维码生成插件 weixin_53205638: 请问怎么保存二维码 (uniapp)uQRCode 二维码生成插件 weixin_48942384: 他不支持带logo的吗 vue 项目 监听 鼠标滚动 (上滚 下滚 滚 多少) 铅笔小新_: