UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

83 lines (81 loc) 2.01 kB
"use strict"; 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 }; }