file文件js怎么用?,file文件js是什么?
- 云服务器
- 2026-07-25
- 9
File对象
File接口是Blob的子类,表示用户文件系统中的文件,它包含文件的元数据,如name(文件名)、size(字节数)、type(MIME类型)等,File对象通常通过文件输入框或拖放操作获得。
获取File对象
- 通过 <input type="file"> 的 change 事件
- 通过拖放事件的 dataTransfer.files 属性
// 文件输入框 const input = document.querySelector('input[type="file"]'); input.addEventListener('change', (e) => { const file = e.target.files[0]; console.log(file.name, file.size, file.type); }); // 拖放 element.addEventListener('drop', (e) => { e.preventDefault(); const files = e.dataTransfer.files; });
FileReader
FileReader 用于异步读取文件或Blob的内容,它提供多种读取方式:
| 方法 | 说明 |
|---|---|
| readAsArrayBuffer(blob) | 读取为 ArrayBuffer |
| readAsDataURL(blob) | 读取为 DataURL(Base64编码) |
| readAsText(blob [, encoding]) | 读取为 文本字符串 |
| readAsBinaryString(blob) | 读取为二进制字符串(已废弃) |
读取文本文件示例
const reader = new FileReader(); reader.onload = () => { console.log(reader.result); // 文件文本内容 }; reader.readAsText(file, 'utf-8');
Blob 与 URL.createObjectURL
Blob 是不可变的二进制数据块,File继承自Blob,因此可以使用Blob的属性和方法。
- Blob.slice(start, end, contentType):用于文件分片
- URL.createObjectURL(blob):生成一个临时URL,用于在浏览器中显示或下载文件
const url = URL.createObjectURL(file); // 显示图片:img.src = url // 下载:a.href = url // 使用后释放内存:URL.revokeObjectURL(url)
文件上传
使用 FormData 轻松上传文件:

拖放上传
结合拖放事件与FormData,实现拖放上传:
dropZone.addEventListener('drop', (e) => { e.preventDefault(); const files = e.dataTransfer.files; const formData = new FormData(); formData.append('file', files[0]); fetch('/upload', { method: 'POST', body: formData }); });
文件分片与断点续传
对于大文件,使用 Blob.slice() 切分后逐个上传,并结合进度和服务端支持实现断点续传。
const chunkSize = 1024 1024; // 1MB const chunks = Math.ceil(file.size / chunkSize); for (let i = 0; i < chunks; i++) { const start = i chunkSize; const end = Math.min(start + chunkSize, file.size); const chunk = file.slice(start, end); // 上传每个 chunk }
Node.js 中的文件系统(fs模块)
Node.js 的 fs 模块提供文件操作功能,包括读写、流式处理等。

| 方法 | 说明 |
|---|---|
| fs.readFile(path, encoding, callback) | 异步读取整个文件 |
| fs.writeFile(path, data, callback) | 异步写入文件 |
| fs.createReadStream(path) | 创建可读流 |
| fs.createWriteStream(path) | 创建可写流 |
读取文件示例
const fs = require('fs'); fs.readFile('example.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); });
流式读取大文件
const readStream = fs.createReadStream('large.txt', { encoding: 'utf8' }); readStream.on('data', (chunk) => { console.log('收到数据块:', chunk.length); }); readStream.on('end', () => console.log('读取完成'));
相关问题与解答
问题1:如何在前端读取一个文本文件并在网页上显示其内容?
解答:
使用 FileReader 对象,首先通过 <input type="file"> 让用户选择文件,在 change 事件中获取 File 对象,创建 FileReader 实例,设置 onload 回调,调用 readAsText(file) 方法,在回调中,reader.result 即为文件内容,可将其插入到 DOM 中显示。
document.querySelector('input[type="file"]').addEventListener('change', (e) => { const file = e.target.files[0]; const reader = new FileReader(); reader.onload = () => { document.getElementById('content').textContent = reader.result; }; reader.readAsText(file); });
问题2:Node.js 中如何读取一个文件的内容并处理?
解答:
Node.js 提供两种主要方式:
- 一次性读取:使用 fs.readFile,适合小文件。
- 流式读取:使用 fs.createReadStream,适合大文件,避免内存溢出。
// 一次性读取 const fs = require('fs'); fs.readFile('data.txt', 'utf8', (err, data) => { if (err) console.error(err); else console.log(data); }); // 流式读取 const stream = fs.createReadStream('data.txt', { encoding: 'utf8' }); stream.on('data', (chunk) => processChunk(chunk)); stream.on('end', () => console.log('处理完成'));
