使用axios上傳文件時需要進度條,可通過監聽axios的onUploadProgress獲取當前文件上傳進度,進度條可以用antd的Progress
實現過程中出現問題request.upload.addEventListener in not a function。
參考南柯一夢的博客https://www.cnblogs.com/leeke98/p/10491358.html
原來和mockjs有關,把項目中mockjs的引用去掉,問題迎刃而解
const [uploading, setUploading] = useState(false);
const [percent, setPercent] = useState(null);
const upload = async () => {
const config = {
onUploadProgress: (progressEvent) => {
const percentNum = Math.round((progressEvent.loaded * 100) / progressEvent.total);
console.log(percentNum);
setPercent(percentNum);
},
withCredentials: true,
};
let url = 'api/xxx';
const formData = new window.FormData();
formData.append("file",file); //上傳的數據
try {
setUploading(true);
const { err, status } = await axios.post(url, formData, config);
} catch (e) {
console.log('ignore', e);
}
setUploading(false);
}