当前位置:首页 > JavaScript

js实现文件读取

2026-02-02 16:28:42JavaScript

使用FileReader API读取文件内容

FileReader是浏览器提供的API,可用于异步读取文件内容。以下示例展示如何读取文本文件内容:

const fileInput = document.getElementById('fileInput');
fileInput.addEventListener('change', (event) => {
  const file = event.target.files[0];
  const reader = new FileReader();

  reader.onload = (e) => {
    const content = e.target.result;
    console.log(content);
  };

  reader.readAsText(file);
});

读取不同类型文件的方法

FileReader提供多种读取方式,适用于不同场景:

reader.readAsText(file) - 读取为文本字符串 reader.readAsDataURL(file) - 读取为Base64数据URL reader.readAsArrayBuffer(file) - 读取为ArrayBuffer对象 reader.readAsBinaryString(file) - 读取为二进制字符串

js实现文件读取

处理大文件的分片读取

对于大文件,可采用分片读取方式避免内存问题:

const chunkSize = 1024 * 1024; // 1MB分片
let offset = 0;

function readChunk(file) {
  const chunk = file.slice(offset, offset + chunkSize);
  const reader = new FileReader();

  reader.onload = (e) => {
    // 处理当前分片数据
    processChunk(e.target.result);

    offset += chunkSize;
    if(offset < file.size) {
      readChunk(file);
    }
  };

  reader.readAsArrayBuffer(chunk);
}

使用Blob对象处理文件

Blob接口可直接操作文件数据:

js实现文件读取

const blob = new Blob(['Hello, world!'], {type: 'text/plain'});
const url = URL.createObjectURL(blob);

// 创建下载链接
const a = document.createElement('a');
a.href = url;
a.download = 'example.txt';
a.click();

Node.js环境下的文件读取

在Node.js中可使用fs模块同步或异步读取文件:

const fs = require('fs');

// 异步读取
fs.readFile('file.txt', 'utf8', (err, data) => {
  if(err) throw err;
  console.log(data);
});

// 同步读取
const data = fs.readFileSync('file.txt', 'utf8');

错误处理与进度监控

完善的实现应包含错误处理和进度监控:

reader.onerror = () => {
  console.error('文件读取错误:', reader.error);
};

reader.onprogress = (event) => {
  if(event.lengthComputable) {
    const percent = (event.loaded / event.total) * 100;
    console.log(`读取进度: ${Math.round(percent)}%`);
  }
};

标签: 文件js
分享给朋友:

相关文章

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

vue文件下载实现

vue文件下载实现

使用 Blob 对象下载文件 在 Vue 中可以通过创建 Blob 对象实现文件下载。通过将后端返回的二进制数据转换为 Blob,再生成下载链接触发浏览器下载行为。 axios.get('/api/…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…