vant组件van-uploader(可多选)上传图片前对base64进行压缩

本文介绍了如何在Vant UI组件库中使用van-uploader进行多选图片上传,并在上传前对base64格式的图片进行压缩,以减少文件大小和提高上传效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 <van-uploader v-model="commentObj.imgModelList"
               multiple
               :max-size="5*1024*1024"
               :max-count="9"
               :before-read="beforeRead"
               :after-read="afterRead"
               :before-delete="beforeDelete"
               @oversize="picOversize" /> 
    // 获取图片url列表
    async afterRead (file) {
   
      if (file.length) {
    // 多选
        file.map(async (item, i) => {
   
          item.status = 'uploading'
          let base64Item = await this.compressImg (item.file) // 获取到压缩后的每一个base64 
          // 拿到后可进行操作 --------
          if (i === file.length - 1) {
   
            file.map
van-uploader是一个Vue.js端文件上传组件,它可以帮助你在项目中轻松地处理图片上传。如果你想在上传图片的同时进行压缩van-uploader提供了配置项来实现这个功能。 首先,你需要安装van-uploader及其相关的插件,例如`vue-file-preview`(用于预览图片)和`sharp`(Node.js的一个库,用于图像处理,包括压缩)。你可以使用npm或yarn进行安装: ```bash npm install vant-upload vue-file-preview sharp # 或者 yarn add vant-upload vue-file-preview sharp ``` 然后,在van-uploader组件的配置里,可以设置一个图片上传钩子(upload hook),在这个钩子中使用sharp来进行图片压缩。以下是一个简单的示例: ```html <template> <van-uploader :on-success="handleSuccess" ...></van-uploader> </template> <script> import { ref } from 'vue'; import VanUploader from 'vant/dist/upload/index.vue'; import preview from 'vue-file-preview'; export default { components: { VanUploader, preview }, setup() { const imageUrl = ref(''); const handleSuccess = (file) => { file.data.url = compressImage(file.originFileUrl); imageUrl.value = file.data.url; }; const compressImage = async (src) => { const resizedImage = await sharp(src) .resize(800, // 设置想要的压缩尺寸 { fit: 'inside' }) // 保持宽高比 .toBuffer(); return resizedImage.toString('base64'); }; return { imageUrl, VanUploader }; } }; </script> ``` 在这个例子中,当图片成功上传后,`handleSuccess`函数会将原图URL替换为压缩后的Base64编码字符串。`compressImage`函数是异步的,因为它使用了Node.js的sharp库来处理图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值