chore: file-upload

This commit is contained in:
dap 2024-10-15 20:40:41 +08:00
parent 30b16fd5a8
commit 2f16e64a3d
4 changed files with 18 additions and 13 deletions

View File

@ -118,9 +118,9 @@ const handleRemove = async (file: UploadFile) => {
}
};
const beforeUpload = (file: File) => {
const beforeUpload = async (file: File) => {
const { maxSize, accept } = props;
const isAct = checkFileType(file, accept);
const isAct = await checkFileType(file, accept);
if (!isAct) {
message.error($t('component.upload.acceptUpload', [accept]));
isActMsg.value = false;

View File

@ -1,20 +1,25 @@
import { fileTypeFromBlob } from '@vben/utils';
/**
* TODO: file-upload暂时使用
* txt文件 @see https://github.com/sindresorhus/file-type/issues/55
*
* @param file file对象
* @param accepts () (image/png等 image/*)
* @returns
*/
export function checkFileType(file: File, accepts: string[]) {
let reg;
if (!accepts || accepts.length === 0) {
reg = /.(?:jpg|jpeg|png|gif|webp)$/i;
} else {
const newTypes = accepts.join('|');
reg = new RegExp(`${String.raw`\.(` + newTypes})$`, 'i');
export async function checkFileType(file: File, accepts: string[]) {
if (!accepts || accepts?.length === 0) {
return true;
}
return reg.test(file.name);
console.log(file);
const fileType = await fileTypeFromBlob(file);
if (!fileType) {
console.error('无法获取文件类型');
return false;
}
console.log('文件类型', fileType);
// 是否文件拓展名/文件头任意有一个匹配
return accepts.includes(fileType.ext) || accepts.includes(fileType.mime);
}
/**

View File

@ -24,7 +24,7 @@ const [BasicModal, modalApi] = useVbenModal({
},
});
const accept = ref(['txt', 'excel', 'word', 'pdf']);
const accept = ref(['xlsx', 'word', 'pdf']);
const maxNumber = ref(3);
const message = computed(() => {

View File

@ -15,7 +15,7 @@ const fieldOptions = [
{ label: 'ossId', value: 'ossId' },
{ label: '链接地址', value: 'url' },
];
const fileAccept = ['txt', 'excel', 'word', 'pdf'];
const fileAccept = ['xlsx', 'word', 'pdf'];
const signleImage = ref<string>('');
</script>