ant design多文件上传-缩略图丢失

  • Post author:
  • Post category:其他


1、使用uploadList自动上传,上传成功后,缩略图丢失,出现了svg图标,如图
在这里插入图片描述

2、究其原因,缩略图的显示是因为,upload组件触发handleChange事件,在uploadList 组件上的 previewFile再次触发,fileList 更新时存储缩略图,此时发现缩略图丢失是因为上传的文件没有给file.thumbUrl赋值为base64。

源码UploadList.js

在这里插入图片描述

在这里插入图片描述

3、解决方法,在Upload.js文件中,添加

targetItem.thumbUrl= window._CONFIG[‘domianURL’] + ‘/sys/common/view/’+ response.message,为了防止预览时由于base64这个字符串太大了,造成浏览器卡顿,把url换成服务器地址即可,同时也给没有生产base64的文件添加上了url

在这里插入图片描述

根据上图的源码可以看出,缩略图的显示方法是利用 FileReader的readAsDataURL将File对象转为 base64,赋值给File对象的thumbUrl属性,组件读到这个属性作为<img`>中src的值从而显示缩略图。

为了避免有的缩略图丢失,就在beforeUpload方法中体现次逻辑。如下



  beforeUpload(file) {
        var fileType = file.type
        if (fileType.indexOf('image') < 0) {
          this.$message.warning('请上传图片!')
          return false
        }
        var reader = new window.FileReader();
        reader.onloadend = function () {
          file.thumbUrl=reader.result
          // return callback(reader.result);
        };
        reader.readAsDataURL(file);
        if (file.size > 5242880) {
          this.$message.warning('上传图片的大小不能超过5M!')
          return false
        }
        //TODO 验证文件大小
      },




版权声明:本文为Emily_Susu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。