html代码
<Dragger {...allProps}>
<div className={styles.title}>点击或将文件拖拽到这里上传</div>
<div className={styles.subTitle}>支持扩展名: .qplay</div>
</Dragger>
选择的文件
。
const [uploadFile, setUploadFile] = useState<any>({});
const allProps: UploadProps = {
accept: '.xlsx',
fileList: [{ ...uploadFile }],
maxCount: 1,
//请求自定义
customRequest: ({ file, onProgress, onSuccess }) => {
console.log('file, onProgress, onSuccess', { file, onProgress, onSuccess })
/* const fileData: any = new FormData();
fileData.append('file', file); */
setUploadFile(file)
playbackImport(formData).then(res => {
// onProgress TODO
)
},
// 立即发起请求
onChange: async (info) => {
const { status, originFileObj } = info.file;
const name = originFileObj.name.split('.');
if (status === 'done') {
const file = new File([originFileObj], name, { type: originFileObj.type });
const formData = new FormData();
formData.append('file', file);
/** 以下是其他几种上传的文件格式转换
const file = new File([JSON.stringify(JSONMap[k])], k, {
type: 'application/json',
});
fileData.append('files', file);
fileData.append('files', new File([Tool.FileTool.setYamlInfo(yamlInfo)], 'map.yaml', {type: 'application/json'}));
const unit8array = Tool.FileTool.getPGMDataByImageData(pgmInfo);
fileData.append('files', new File([new Blob([unit8array])], 'map.pgm', {type: 'image/pgm'}));
*/
const data = await playbackImport(formData);
console.log(data);
if (data.success === false) {
message.error(data.message || data.code);
}
uploadCancel();
} else if (status === 'error') {
message.error(`${info.file.name} file upload failed.`);
}
},
};
往后端发请求
export const api= async (formData: any) => {
try {
return await request<Record<string, any>>(`${basePlaybackURL}/import`, {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data', //代表多选文件上传 只上传一份文件不需要加
},
data: formData,
});
} catch (err: any) {
return err.info;
}
};