1. 程式人生 > >el-upload multiple多文件上傳,只傳上一個的問題

el-upload multiple多文件上傳,只傳上一個的問題

exp gre catch dxf bsp loaded open req imp

問題: 使用el-upload上傳多文件時,on-success鉤子只拿到了一個response,上傳只成功上傳了一個。

解決:使用:http-requst來覆蓋默認的上傳行為,可以自定義上傳的實現。

代碼:

<template>
  <el-upload
    :disabled="disabled"
    :drag="type === ‘drag‘"
    :multiple="true"
    action="/files/upload"
    :http-request="uploadRequest"
    :with-credentials="true"
    :file
-list="fileList" :before-upload="beforeUpload" :on-preview="filePreview" :on-remove="fileRemove" :on-success="uploadSuccess" :on-error="uploadError"> <template v-if="type === ‘button‘"> <el-button class="width-7" size="small" type="primary">上傳</el-button> </template> <template v-else
-if="type === ‘drag‘"> <i class="el-icon-upload"></i> <div class="el-upload__text">將文件拖到此處,或<em>點擊上傳</em></div> </template> </el-upload> </template> <script> import {mapActions} from ‘vuex‘; export default { props: { fileList: { required:
true }, type: { default: ‘drag‘ }, disabled: false, fileType: { type: String, default: ‘all‘ }, isAttach: { default: false } }, data() { return {}; }, methods: { ...mapActions([ ‘deleteFile‘ ]), beforeUpload(file) { if (this.fileType === ‘emergency‘) { let str = ‘pdf,bmp,jpg,png,tif,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw‘; if (!(str.indexOf(file.name.split(‘.‘).reverse()[0]) > -1)) { this.$message.error(‘文件類型錯誤!‘); return false; } } else if (this.isAttach && file && file.size > 500 * 1024 * 1024) { this.$message.error(‘上傳文件不得超過500M‘); return false; } }, filePreview(file) { window.open(file.url); }, fileRemove(file) { if (file && file.id && !this.isAttach) { this.deleteFile(file.id).then(() => { this.$emit(‘attachmentDelete‘, file.id); this.$message({message: ‘文件刪除成功‘, type: ‘success‘}); }).catch(() => { this.$message.error(`文件“${file.name}”刪除失敗`); }); } else if (this.isAttach && file && file.attachmentId) { this.deleteFile(file.attachmentId).then(() => { this.$emit(‘attachmentDelete‘, file.attachmentId); this.$message({message: ‘文件刪除成功‘, type: ‘success‘}); }).catch(() => { this.$message.error(`文件“${file.name}”刪除失敗`); }); } }, uploadSuccess(response) { if (response) { this.$message({message: ‘文件上傳成功‘, type: ‘success‘}); this.$emit(‘uploadSuccess‘, response); } }, uploadError(err, file) { if (err) { this.$message.error(`文件“${file.name}”上傳失敗`); } }, uploadRequest(param) { let fileObj = param.file; let form = new FormData(); form.append(‘file‘, fileObj); this.$axios.$post(`/files/upload`, form, { process: function (event) { param.file.percent = event.loaded / event.total * 100; param.onprogress(param.file); } }).then(res => { this.uploadSuccess(res); }).catch(res => { this.uploadError(); }); } } }; </script>

el-upload multiple多文件上傳,只傳上一個的問題