ckgl/node_modules/vant/es/uploader/utils.mjs
2024-12-21 13:52:42 +08:00

70 lines
1.6 KiB
JavaScript

import { toArray, createNamespace, isFunction } from "../utils/index.mjs";
const [name, bem, t] = createNamespace("uploader");
function readFileContent(file, resultType) {
return new Promise((resolve) => {
if (resultType === "file") {
resolve();
return;
}
const reader = new FileReader();
reader.onload = (event) => {
resolve(event.target.result);
};
if (resultType === "dataUrl") {
reader.readAsDataURL(file);
} else if (resultType === "text") {
reader.readAsText(file);
}
});
}
function isOversize(items, maxSize) {
return toArray(items).some((item) => {
if (item.file) {
if (isFunction(maxSize)) {
return maxSize(item.file);
}
return item.file.size > +maxSize;
}
return false;
});
}
function filterFiles(items, maxSize) {
const valid = [];
const invalid = [];
items.forEach((item) => {
if (isOversize(item, maxSize)) {
invalid.push(item);
} else {
valid.push(item);
}
});
return { valid, invalid };
}
const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg|avif)/i;
const isImageUrl = (url) => IMAGE_REGEXP.test(url);
function isImageFile(item) {
if (item.isImage) {
return true;
}
if (item.file && item.file.type) {
return item.file.type.indexOf("image") === 0;
}
if (item.url) {
return isImageUrl(item.url);
}
if (typeof item.content === "string") {
return item.content.indexOf("data:image") === 0;
}
return false;
}
export {
bem,
filterFiles,
isImageFile,
isImageUrl,
isOversize,
name,
readFileContent,
t
};