返回

用JS FileReader读取文件

前端

FileReader简介

FileReader对象允许Web应用程序异步读取存储在用户计算机上的文件,而无需将整个文件加载到内存中。这对于处理大型文件非常有用,因为可以避免内存溢出。FileReader还支持多种文件类型,包括文本文件、图像文件和视频文件。

FileReader的使用方法

要使用FileReader对象读取文件,需要执行以下步骤:

  1. 创建一个FileReader对象。
  2. 使用FileReader对象的readAsText()或readAsArrayBuffer()方法来读取文件。
  3. 在FileReader对象的onload事件处理程序中处理文件读取结果。

FileReader对象的onload事件处理程序将在文件读取完成后触发。在事件处理程序中,可以访问FileReader对象的result属性来获取文件读取结果。

FileReader读取文本文件

要使用FileReader对象读取文本文件,可以使用以下代码:

var file = new File(["Hello, world!"], "hello.txt", {
  type: "text/plain",
});
var reader = new FileReader();
reader.onload = function() {
  console.log(reader.result);
};
reader.readAsText(file);

FileReader读取二进制文件

要使用FileReader对象读取二进制文件,可以使用以下代码:

var file = new File([new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x21])], "hello.bin", {
  type: "application/octet-stream",
});
var reader = new FileReader();
reader.onload = function() {
  console.log(reader.result);
};
reader.readAsArrayBuffer(file);

FileReader读取图片文件

要使用FileReader对象读取图片文件,可以使用以下代码:

var file = new File(["Hello, world!"], "hello.png", {
  type: "image/png",
});
var reader = new FileReader();
reader.onload = function() {
  var img = new Image();
  img.onload = function() {
    document.body.appendChild(img);
  };
  img.src = reader.result;
};
reader.readAsDataURL(file);

FileReader读取视频文件

要使用FileReader对象读取视频文件,可以使用以下代码:

var file = new File(["Hello, world!"], "hello.mp4", {
  type: "video/mp4",
});
var reader = new FileReader();
reader.onload = function() {
  var video = document.createElement("video");
  video.src = reader.result;
  video.controls = true;
  document.body.appendChild(video);
};
reader.readAsDataURL(file);

总结

FileReader对象提供了异步读取文件的方法,可以避免内存溢出,并支持多种文件类型。通过使用FileReader对象,我们可以轻松地处理各种类型的文件。