feat: 修改上传统一参数格式&上传组件提取参数
This commit is contained in:
parent
468a8d8865
commit
45f923d752
|
@ -83,28 +83,16 @@ export class MSAxios {
|
|||
*/
|
||||
uploadFile<T = any>(config: AxiosRequestConfig, params: UploadFileParams) {
|
||||
const formData = new window.FormData();
|
||||
const customFilename = params.name || 'file';
|
||||
const fileName = params.fileList.length === 1 ? 'file' : 'files';
|
||||
|
||||
if (params.filename) {
|
||||
formData.append(customFilename, params.file, params.filename);
|
||||
} else {
|
||||
formData.append(customFilename, params.file);
|
||||
params.fileList.forEach((file: File) => {
|
||||
formData.append(fileName, file);
|
||||
});
|
||||
if (params.request) {
|
||||
const requestData = JSON.stringify(params.request);
|
||||
const requestDataBlob = new Blob([requestData], { type: 'application/json' });
|
||||
formData.append('request', requestDataBlob);
|
||||
}
|
||||
|
||||
if (params.data) {
|
||||
Object.keys(params.data).forEach((key) => {
|
||||
const value = params.data[key];
|
||||
if (Array.isArray(value)) {
|
||||
value.forEach((item) => {
|
||||
formData.append(`${key}[]`, item);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
formData.append(key, params.data[key]);
|
||||
});
|
||||
}
|
||||
|
||||
return this.axiosInstance.request<T>({
|
||||
...config,
|
||||
method: 'POST',
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<template #upload-button>
|
||||
<div class="ms-upload-area">
|
||||
<div class="ms-upload-icon-box">
|
||||
<div class="ms-upload-icon ms-upload-icon--excel"></div>
|
||||
<div class="ms-upload-icon" :class="`ms-upload-icon--${props.iconType}`"></div>
|
||||
</div>
|
||||
<div v-if="props.mainText" class="ms-upload-main-text">{{ t(props.mainText) }}</div>
|
||||
<div v-if="props.subText" class="ms-upload-sub-text">{{ t(props.subText) }}</div>
|
||||
|
@ -29,6 +29,7 @@
|
|||
limit: number;
|
||||
imagePreview: boolean;
|
||||
showFileList: boolean;
|
||||
iconType: string;
|
||||
[key: string]: any;
|
||||
}> & {
|
||||
accept: UploadType;
|
||||
|
@ -86,6 +87,9 @@
|
|||
&--image {
|
||||
background-image: url('@/assets/svg/icons/image.svg');
|
||||
}
|
||||
&--jar {
|
||||
background-image: url('@/assets/svg/icons/jar.svg');
|
||||
}
|
||||
}
|
||||
}
|
||||
.ms-upload-main-text {
|
||||
|
|
|
@ -99,3 +99,24 @@ export function sleep(ms: number): Promise<void> {
|
|||
setTimeout(() => resolve(), ms);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 返回文件的大小
|
||||
* @param fileSize file文件的大小size
|
||||
* @returns
|
||||
*/
|
||||
export function formatFileSize(fileSize: number): string {
|
||||
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
||||
let size = fileSize;
|
||||
let unitIndex = 0;
|
||||
|
||||
while (size >= 1024 && unitIndex < units.length - 1) {
|
||||
size /= 1024;
|
||||
unitIndex++;
|
||||
}
|
||||
const formattedSize = size.toFixed(2);
|
||||
const unit = units[unitIndex];
|
||||
|
||||
return `${formattedSize} ${unit}`;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue