解決el-upload批量上傳隻執行一次成功回調on-success的問題
el-upload批量上傳隻執行一次成功回調on-success
刪除掉:
file-list="fileList"
在網上找瞭下解決方法,發現取消file-list綁定即可,網上也有自定義的上傳事件的方法,不過這個操作起來更方便一些。
上面方法還是有點問題,正確的方法是在後臺拉數據的時候,創建一個臨時變量filelist2,然後將後臺的數據filelist賦值給filelist2,再將filelist2綁定(:file-list="filelist2")
然後對數據的操作都在filelist中。
el-upload自定義上傳後回調上傳成功和失敗事件
template部分:
<el-upload class="el_upload_above" action="" ref="upload" :limit="limitnum" list-type="picture-card" :http-request="uploadSectionFile" :auto-upload="true" :file-list="fileList" :on-error="uploadFileError" :on-success="uploadFileSuccess" :on-exceed="exceedFile" :on-remove="removeFile"> </el-upload>
script部分:
<script> export default { data() { return { fileList:[],//上傳的文件列表 limitnum:2,//最大允許上傳個數 }; }, methods: { //自定義上傳 uploadSectionFile(param){ var fileObj = param.file; var form = new FormData(); // 文件對象 form.append("file", fileObj); this.$axios.post('/file/upload',form).then(res => { param.onSuccess(res) }).catch(({err}) => { param.onError(err) }) }, //上傳失敗 uploadFileError(err, file, fileList){ this.$message.error("上傳失敗!") }, //上傳成功 uploadFileSuccess(response, file, fileList){ if(response.data.error==0){ file.response=response.data.data; this.fileList.push(file) }else{ this.$message.error(response.data.message);//文件上傳錯誤提示 } }, // 文件超出個數限制時的鉤子 exceedFile(files, fileList){ this.$message.error('隻能上傳'+this.limitnum+'個文件'); }, //刪除文件 removeFile(file,fileList) { this.fileList=fileList; }, } } </script>
註釋
自定義上傳後,成功和失敗需要在自定義上傳代碼中觸發(onSuccess / onError)。在組件部分需要寫文件上傳或失敗的回調事件(uploadFileSuccess / uploadFileError)
總結
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- element el-upload文件上傳覆蓋第一個文件的實現
- vue使用Element el-upload 組件踩坑記
- vue使用element實現上傳圖片和修改圖片功能
- 詳解Vue ElementUI手動上傳excel文件到服務器
- element upload 鉤子函數的坑及解決