elementUI 图片上传前进行压缩

npm install --save image-conversion

<template>
  <div class="select_invoice">
    <el-upload class="upload-demo" 
:multiple="true" 
:action="uploadPath" 
:data="uploadData" 
accept="bmg,.png,.jpg,.jpeg" 
:before-upload="beforeUpload" 
:on-success="handleSuccess" 
:on-error="hanldeError" 
multiple
:limit="20">
      <el-button size="small" type="primary">添加图片</el-button>
    </el-upload>
  </div>
</template>


  // 引入image-conversion
import imageConversion from 'image-conversion'
 methods: { 
// 第一种,不考虑图片长宽,只考虑图片大小的情况,图片超过4M就压缩
 beforeUpload (file) { return new Promise((resolve, reject) => {
        let isLt2M = file.size / 1024 / 1024 < 4 // 判定图片大小是否小于4MB
        if (isLt2M) {
          resolve(file)
        }
        console.log(file) // 压缩到400KB,这里的400就是要压缩的大小,可自定义
        imageConversion.compressAccurately(file, 400).then(res => { // console.log(res)
         resolve(res)
        })
      })
    }, 
//第二种,图片大小超过4M,长度超过2000就压缩
 beforeUpload2 (file) { // 图片不大于4m,宽度不大于2000
      return new Promise((resolve, reject) => {
        let _URL = window.URL || window.webkitURL
        let isLt2M = file.size / 1024 / 1024 > 4 // 判定图片大小是否小于4MB
        // 这里需要计算出图片的长宽
        let img = new Image()
        img.onload = function () {
          file.width = img.width // 获取到width放在了file属性上
          file.height = img.height // 获取到height放在了file属性上
          let valid = img.width > 2000 // 图片宽度大于2000
          // console.log(11, file)
          // 这里我只判断了图片的宽度,compressAccurately有多个参数时传入对象
          if (valid || isLt2M) {
            imageConversion.compressAccurately(file, {
              size: 400,
              width: 2000 }).then(res => { // console.log(33, res)
               resolve(res)
            })
          } else resolve(file)
        } // 需要把图片赋值
        img.src = _URL.createObjectURL(file)
      })
    },
  } </script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ElementUI图片上传功能可以使用后端分离的方式进行实现。首先,在端使用ElementUI提供的Upload组件进行图片上传,具体可以参考引用中的代码。在上传成功后,可以通过调用后端的接口来保存图片。在后端的代码中,可以参考引用中的示例代码,该代码使用了第三方接口来保存图片。具体来说,后端代码中的savePhoto方法接收上传的图片文件作为参数,并通过httpPostFacePohto方法将图片发送给第三方接口进行保存。最后,将保存成功的结果返回给端。这样,后端就实现了ElementUI图片上传功能。同时,为了提高性能,可以进行一些优化措施,如图片压缩端代码压缩和按需加载等,具体可以参考引用中的内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Vue ElementUI 上传图片文件 全栈 从端到后端实战 附有图文](https://blog.csdn.net/wuhan_jun/article/details/108874051)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [SpringBoot+Vue后端分离 .zip](https://download.csdn.net/download/qq_39740279/12522622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ahwangzc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值