element-ui自定义上传图片http-request回调里面调onSuccess函数


根据element-ui官方文档,照片墙的api格式复制到本地,发现执行没问题,一切完美

但是实际的业务需求:1、需要自定义上传图 2、需要删除+看大图 3、将上传成功的图片,每个图片的名称,由逗号隔开组成的字符串传给接口

template部分
<el-upload action="" list-type="picture-card" :http-request="uploadFile"
 :file-list="fileList1"
 :on-success="onSuccess"
:on-preview="handlePictureCardPreview"
 :on-remove="handleRemove">
  <i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
  <img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>

js部分
data部分:
fileList1: [],
fileList2: [],
fileListIndex: 1

methods方法部分:
uploadFile: function (param) {
         var that = this;
         var form = new FormData();
         form.append("file", param.file);
         that.$http.post('接口地址', form, {
            headers: {
               "Content-Type": "multipart/form-data"
            },
            onUploadProgress: progressEvent => {
               let percent = (progressEvent.loaded / progressEvent.total * 100) | 0
               //调用onProgress方法来显示进度条,需要传递个对象 percent为进度值
               param.onProgress({ percent: percent })
            }
         }).then((res) => {
            //上传成功 调用onSuccess方法,否则图片右上角没有绿色的对号的icon(完成图标)
            //处理自己的逻辑
            param.onSuccess(res);//必须传参res,否则在onsuccess的参数里面,response属性值为undefined,如果传了值,则会把res的值作为response的属性值

         })
      },
onSuccess(response, file, fileList) {
//这里的fileList就是一个数组,里面的response属性值,就是res的传参
            switch (this.fileListIndex) {
               case '1':
                  this.fileList1 = fileList//如果有多个地方,需要分别上传相应的图片,那么在onSuccess回调里面,就需要分别给fileList1给赋值,不然fileList1是空数组
                  break;
               case '2':
                  this.fileList2 = fileList
                  break;
               default:
                  console.log(response, file)
                  break;
            }
         },

以上代码,上传成功后,先出现本地图片,然后图片右上角出现一个绿色的对号icon,但是通过审查元素,发现图片还是本地的biob:http:...这样的本地地址,并不是接口返回的url地址,所以如果接口传参,需要传图片对应的url或者name需要对fileList1和fileList2等等,自己自定义的file-list数组进行处理

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM