12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import { last } from "lodash-es";
- import { filename, extname } from "/@/cool/utils";
- import { module } from "/@/cool";
- import type { Upload } from "../types";
- // 模块参数
- const { options } = module.get("upload");
- // 规则列表
- const rules: Upload.Rule[] = options.rules || [];
- // 文件大小
- export function fileSize(size = 0): string {
- const num = 1024.0;
- if (size < num) return size + "B";
- if (size < Math.pow(num, 2)) return (size / num).toFixed(2) + "K";
- if (size < Math.pow(num, 3)) return (size / Math.pow(num, 2)).toFixed(2) + "M";
- if (size < Math.pow(num, 4)) return (size / Math.pow(num, 3)).toFixed(2) + "G";
- return (size / Math.pow(num, 4)).toFixed(2) + "T";
- }
- // 文件名
- export function fileName(url: string) {
- return filename(url.substring(url.indexOf("_") + 1));
- }
- // 文件规则
- export function fileRule(path?: string) {
- const d = rules.find((e) => {
- return e.exts.find((a) => a == extname(path || "").toLocaleLowerCase());
- });
- return (d || last(rules))!;
- }
- // 获取规则
- export function getRule(type?: string) {
- return (rules.find((e) => e.type == type) || last(rules))!;
- }
- // 获取类型
- export function getType(path: string) {
- return fileRule(path).type;
- }
- // 拼接数组下的url
- export function getUrls(list: any[]) {
- return list.map((e) => e.url.replace(/,/g, encodeURIComponent(",")));
- }
- // 路径拼接
- export function pathJoin(...parts: string[]): string {
- if (parts.length === 0) {
- return "";
- }
- const firstPart = parts[0];
- let isAbsolute = false;
- // 检查第一个部分是否以 "http" 开头,以确定路径类型(绝对还是相对)
- if (firstPart.startsWith("http")) {
- isAbsolute = true;
- }
- // 标准化路径,去除任何开头或结尾的斜杠
- const normalizedParts = parts.map((part) => part.replace(/(^\/+|\/+$)/g, ""));
- if (isAbsolute) {
- // 如果是绝对路径,使用斜杠连接部分
- return normalizedParts.join("/");
- } else {
- // 如果是相对路径,使用平台特定的分隔符连接部分
- return normalizedParts.join("/");
- }
- }
|