diff --git a/src/api/infra/file/index.ts b/src/api/infra/file/index.ts index 7f543745..503711f6 100644 --- a/src/api/infra/file/index.ts +++ b/src/api/infra/file/index.ts @@ -10,7 +10,9 @@ export interface FilePageReqVO extends PageParam { export interface FilePresignedUrlRespVO { // 文件配置编号 configId: number - // 文件预签名地址 + // 文件上传 URL + uploadUrl: string + // 文件 URL url: string } diff --git a/src/components/UploadFile/src/useUpload.ts b/src/components/UploadFile/src/useUpload.ts index bee0d584..ecaecbde 100644 --- a/src/components/UploadFile/src/useUpload.ts +++ b/src/components/UploadFile/src/useUpload.ts @@ -19,11 +19,11 @@ export const useUpload = () => { // 1.2 获取文件预签名地址 const presignedInfo = await FileApi.getFilePresignedUrl(fileName) // 1.3 上传文件(不能使用ElUpload的ajaxUpload方法的原因:其使用的是FormData上传,Minio不支持) - return axios.put(presignedInfo.url, options.file).then(() => { + return axios.put(presignedInfo.uploadUrl, options.file).then(() => { // 1.4. 记录文件信息到后端 - const fileVo = createFile(presignedInfo.configId, fileName, presignedInfo.url, options.file) + createFile(presignedInfo, fileName, options.file) // 通知成功,数据格式保持与后端上传的返回结果一致 - return { data: fileVo.url } + return { data: presignedInfo.url } }) } else { // 模式二:后端上传(需要增加后端身份认证请求头) @@ -42,17 +42,15 @@ export const useUpload = () => { /** * 创建文件信息 - * @param configId 文件配置编号 + * @param vo 文件预签名信息 * @param name 文件名称 - * @param url 文件地址 * @param file 文件 */ -function createFile(configId: number, name: string, url: string, file: UploadRawFile) { +function createFile(vo: FileApi.FilePresignedUrlRespVO, name: string, file: UploadRawFile) { const fileVo = { - configId: configId, + configId: vo.configId, + url: vo.url, path: name, - // 移除预签名参数:参数只在上传时有用,查看时不需要 - url: url.substring(0, url.indexOf('?')), name: file.name, type: file.type, size: file.size