上传文件重命名, 避免重名覆盖

dev/chat
Lei OT 2 years ago
parent 571298659c
commit f7dc6b97ba

@ -1,4 +1,5 @@
import { Upload, Button, message, Tooltip } from 'antd'; import { Upload, Button, message, Tooltip } from 'antd';
import { useState } from 'react';
import { FileAddOutlined } from '@ant-design/icons'; import { FileAddOutlined } from '@ant-design/icons';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { API_HOST } from '@/config'; import { API_HOST } from '@/config';
@ -29,17 +30,17 @@ const ImageUpload = ({ disabled, invokeUploadFileMessage, invokeSendUploadMessag
// const setComplexMsg = useConversationStore(state => state.setComplexMsg); // const setComplexMsg = useConversationStore(state => state.setComplexMsg);
// const complexMsg = useConversationStore(state => state.complexMsg); // const complexMsg = useConversationStore(state => state.complexMsg);
const [fileObj, setFileObj] = useState();
const beforeUpload = async (file) => { const beforeUpload = async (file) => {
// 使 FileReader // 使 FileReader
const reader = new FileReader(); const reader = new FileReader();
//
reader.onload = (event) => {
const previewSrc = event.target.result;
const suffix = file.name.slice(file.name.lastIndexOf('.')+1); const suffix = file.name.slice(file.name.lastIndexOf('.')+1);
const type = Object.keys(fileTypesExt).find((type) => fileTypesExt[type].includes(suffix)); const type = Object.keys(fileTypesExt).find((type) => fileTypesExt[type].includes(suffix));
const name = file.name;
const rename = Date.now() + '.' + suffix; const rename = Date.now() + '.' + suffix;
const dataUri = aliOSSHost + file.name; const dataUri = aliOSSHost + rename;
//
reader.onload = (event) => {
const previewSrc = event.target.result;
const msgObj = { const msgObj = {
type: type, type: type,
name: file.name, name: file.name,
@ -48,11 +49,12 @@ const ImageUpload = ({ disabled, invokeUploadFileMessage, invokeSendUploadMessag
id: uuid(), id: uuid(),
}; };
file.msgData = msgObj; file.msgData = msgObj;
setFileObj(msgObj);
invokeUploadFileMessage(msgObj); invokeUploadFileMessage(msgObj);
}; };
// dataURL // dataURL
reader.readAsDataURL(file); reader.readAsDataURL(file);
return file; return new File([file], rename, { type: file.type })
}; };
const uploadProps = { const uploadProps = {
name: 'file', name: 'file',
@ -71,7 +73,7 @@ const ImageUpload = ({ disabled, invokeUploadFileMessage, invokeSendUploadMessag
{...uploadProps} {...uploadProps}
onChange={({file}) => { onChange={({file}) => {
if (file.status === 'done') { if (file.status === 'done') {
invokeSendUploadMessage(file.msgData); invokeSendUploadMessage(fileObj);
} }
if (file.status === 'error') { if (file.status === 'error') {
message.error(`添加失败`); message.error(`添加失败`);

@ -129,12 +129,12 @@ const InputComposer = () => {
// 使 FileReader // 使 FileReader
const reader = new FileReader(); const reader = new FileReader();
const suffix = file.name.slice(file.name.lastIndexOf('.')+1); const suffix = file.name.slice(file.name.lastIndexOf('.')+1);
const newName = rename ? `${uuid()}.${suffix}` : file.name; const newName = `${uuid()}.${suffix}`; // rename ? `${uuid()}.${suffix}` : file.name;
const type = Object.keys(fileTypesExt).find((type) => fileTypesExt[type].includes(suffix)); const type = Object.keys(fileTypesExt).find((type) => fileTypesExt[type].includes(suffix));
const dataUri = aliOSSHost + newName; const dataUri = aliOSSHost + newName;
const msgObj = { const msgObj = {
type: type, type: type,
name: newName, name: file.name,
uploadStatus: 'loading', uploadStatus: 'loading',
data: { dataUri: dataUri, link: dataUri, width: '100%', height: 150, loading: 0.01 }, data: { dataUri: dataUri, link: dataUri, width: '100%', height: 150, loading: 0.01 },
id: uuid(), id: uuid(),

Loading…
Cancel
Save