前端上传文件时如何读取文件内容
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 487
Author 回答者: shfshanyue
<input type="file" id="input" onchange="handleFiles(this.files)" />
在浏览器中,通过 input[type=file]
来点击上传文件,此时监听 onChange
事件,可以获取到 File
对象,其中从中可以读取文件内容
而读取文件内容,需要转化 File/Blob
到 Text
,一般使用以下两种方案
FileReader API
这是最常用处理上传文件的 API,但是却繁琐冗余难记,每次使用基本上都要查文档!
FileReader API
用以读取 File/Blob 内容,正因为繁琐难记,以下实现一个 readBlob
函数读取内容。
function readBlob(blob) {
return new Promise((resolve) => {
const reader = new FileReader();
reader.onload = function (e) {
resolve(e.target.result);
};
reader.readAsText(blob);
});
}
Response API
而是用 Response API
只需要一行内容
const readBlob = (blob) => new Response(blob).text();