element-ui图片上传功能(也适用于多张图片)

<el-upload
   :on-preview="handlePreview"
   :on-remove="handleRemove"
   list-type="picture"
   action="https://jsonplaceh.com/posts/"
   :file-list="add_ObjDetails"
   style="display: inline-block; margin-left: 30px"
   :http-request="imgUpload"
   :before-upload="beforeAvatarUpload"
   :limit='1'
   :on-exceed="handleExceed"
   :before-remove="beforeRemove"
   accept=".jpg,.jpeg,.png,.JPG,.JPEG"
>
    <el-button
       size="small"
       type="primary"
    >上传图片</el-button>
</el-upload>
<script>
   data(){
    return{
        add_ObjDetails=[]
    }
   },
    //点击文件列表中已上传的文件时的钩子
   handlePreview(file) {
      console.log("file--->", file);
   },
    // 删除图片
   handleRemove(file, fileList) {
      // 点击删除图片,获取图片文件file,
      // 筛选出图片文件file.url和图片数组的url一致的数据
      // 删除掉这个数据
      this.add_ObjDetails.filter((item,index) => {
        if (item.url == file.url) {
          this.add_ObjDetails.splice(index, 1);
        }
      });
    },
   //上传图片
   imgUpload(e) {
      // e 图片文件
      let file = e.file;
      // new 一个FormData 表单
      let FormDatas = new FormData();
      // 加一个 键 multipartFile值是图片文件
      FormDatas.append("multipartFile", file);
      // 把FormDatas作为参数调接口  图片接口的作用:把文件类型的图片转为公司链接形式的图片
      api.CommonUpload_uploadImagesTX(FormDatas, "media/").then((res) => {
        if (res.status == 200) {
          console.log("res.data", res.data);
          // 创造一个对象 键为url 值为后端返回的img链接
          let imgObj = {
            url: res.data,
          };
          // 把创造的对象加到图片数组中
          this.add_ObjDetails.push(imgObj);
        } 
      });
   },
   handleExceed(files,fileList){
      this.$message.warning(`当前限制选择 1 个图片,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
    },
    //限制上传图片大小
   beforeAvatarUpload(){
    //待补充
    }
</script>
el-upload里Api的详细介绍
  • on-preview:点击文件列表中已上传的文件时的钩子

  • on-remove:文件列表移除文件时的钩子

  • list-type="picture":文件列表的类型(比如编辑查看已上传的图片,展开形式以图片形式展开)

  • list-type="picture-card":文件列表的类型(比如编辑查看已上传的图片,展开形式以卡片形式展开),同上的区别是,为picture时,如果上传一张以上的图片,在再次点击编辑查看时,图片会重叠甚至图片丢失看不到,且只能一次性全删

  • action:必选参数,表示上传的地址

  • limit:允许上传的最大个数

  • on-exceed:可通过设置limit和on-exceed来限制上传文件的个数和定义超出限制时的行为。

  • before-remove:用来阻止文件移除操作。删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。this.$confirm弹出框具体使用方法

  • http-request :覆盖默认的上传行为,可以自定义上传的实现的函数

  • before-upload:上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。主要用它来限制用户上传的图片格式和大小

  • accept:接受上传的文件类型(thumbnail-mode 模式下此参数无效),如图所示,接受上传文件的类型会自动同步在自定义文件内,如需上传accept之外的文件,点击所有文件即可,这个属性没太大作用,可以不写

el-button配合upload点击按钮上传图片功能

在编辑和新增共同的保存点击事件中
  • 首先遍历数组通过map将数组里每一项的url返回出来,生成新数组imgList,此时的imgList就是所有项为图片url的数组。

  • 由于后端规定url需传的参数为字符,此时我们需要将imgList这个数组通过join方法转成字符串返回给this.form.regulationsImg,最后调保存的接口即可。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值