import fileSize from "filesize"; import { lastIndexOf } from "lodash"; /** * 格式化为b * @param num 需要格式化的数字 * @module File */ function fileSizeBits(num: number) { return fileSize(num, { bits: true }); } /** * 格式化为几位小数 * @param num 数字 * @param round 保留几位小数 * @module File */ function fileSizeRound(num: number, round: number = 2) { return fileSize(num, { round: 2, }); } /** * 根据url获取文件名称 * 本意是获取分隔符的最后一项内容 * @param url 文件url * @param signal 文件分隔符 * @module File */ function getFileNameByUrl(url: string, signal: string = "\\") { const idx = lastIndexOf(url, signal) || 0; const result = url.slice(0, idx + 1); return decodeURIComponent(result); } /** * file转为base64 * @param {*} file file对象 * @returns {Promise} * @module File */ function fileToDataURL(file: File) { const freader = new FileReader(); freader.readAsDataURL(file); return new Promise((resolve, reject) => { freader.onload = function (e) { resolve(e.target?.result); }; freader.onerror = function (e) { reject(e); }; }); } export { /** * filesize(500); // "500 B" * filesize(500, {bits: true}); // "4 Kb" * filesize(265318, {base: 10}); // "265.32 kB" * filesize(265318); // "259.1 KB" * filesize(265318, {round: 0}); // "259 KB" * filesize(265318, {output: "array"}); // [259.1, "KB"] * filesize(265318, {output: "object"}); // {value: 259.1, symbol: "KB", exponent: 1} * filesize(1, {symbols: {B: "Б"}}); // "1 Б" * filesize(1024); // "1 KB" * filesize(1024, {exponent: 0}); // "1024 B" * filesize(1024, {output: "exponent"}); // 1 * filesize(265318, {standard: "iec"}); // "259.1 KiB" * filesize(265318, {standard: "iec", fullform: true}); // "259.1 kibibytes" * filesize(12, {fullform: true, fullforms: ["байтов"]}); // "12 байтов" * filesize(265318, {separator: ","}); // "259,1 KB" * filesize(265318, {locale: "de"}); // "259,1 KB" */ fileSize, fileSizeBits, fileSizeRound, getFileNameByUrl, fileToDataURL, };