vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
83 lines (81 loc) • 2.01 kB
JavaScript
exports.__esModule = true;
exports.readFile = readFile;
/**
* 各种内容类型的读取器。
*
* @public
*/
/**
* 读取给定文件的内容。
*
* @public
* @param file 要读取的文件
* @returns 返回各种内容类型的读取器
* @example
* ```typescript
* const file = new File(['{"x":1}'], 'x.json')
* const reader = readFile(file)
* console.log(await reader.text()) // => '{"x":1}'
* console.log(await reader.json()) // => {x: 1}
* ```
*/
function readFile(file) {
var text = function text() {
return new Promise(function (resolve, reject) {
var fileReader = new FileReader();
fileReader.onload = function () {
resolve(fileReader.result);
};
fileReader.onerror = function () {
reject(fileReader.error);
};
fileReader.readAsText(file);
});
};
var json = function json() {
return text().then(function (data) {
try {
return JSON.parse(data);
} catch (err) {
return Promise.reject(err);
}
});
};
var dataUrl = function dataUrl() {
return new Promise(function (resolve, reject) {
var fileReader = new FileReader();
fileReader.onload = function () {
resolve(fileReader.result);
};
fileReader.onerror = function () {
reject(fileReader.error);
};
fileReader.readAsDataURL(file);
});
};
var base64 = function base64() {
return dataUrl().then(function (url) {
return url.split(';base64,')[1];
});
};
var arrayBuffer = function arrayBuffer() {
return new Promise(function (resolve, reject) {
var fileReader = new FileReader();
fileReader.onload = function () {
resolve(fileReader.result);
};
fileReader.onerror = function () {
reject(fileReader.error);
};
fileReader.readAsArrayBuffer(file);
});
};
return {
text: text,
json: json,
dataUrl: dataUrl,
base64: base64,
arrayBuffer: arrayBuffer
};
}
;