vant的uploader上传图片遇到超时或则报错后页面图片的处理

该博客介绍了如何在Vant UI框架中处理图片上传时可能出现的错误,包括上传失败、文件大小超限等情况。通过监听`before-read`、`after-read`、`before-delete`等事件,实现了图片上传失败后的重新上传和删除功能。同时,通过`onOversize`回调处理文件大小超出限制的场景,并提供了图片预览功能。
摘要由CSDN通过智能技术生成

vant图片上传报错或失败的处理

上传图片失败页面渲染样式
删除失败图片

<template>
    <div>
        <van-cell required title=“事项图片” value=“(最多支持上传3张图片)” />
          <van-uploader
                  v-model="fileList"
                  :before-read="beforeRead"
                  :after-read="onReadIdCardback"
                  :before-delete="beforeDeleteBack"
                  :max-size="5*1024*1024"
                   multiple
                  :max-count="3"
                  @oversize="onOversize"
                  @click-preview="clickpreview"
          />
    </div>
</template>
<script>
export default {
     data() {
         return {
             fileList:[],// 组件双向绑定的图片数组
             pictureList:[] // 给接口的图片数组
         }
     },
     methods:{
         // 图片上传
         onReadIdCardback(file,detail){
             let params=new FormData();
             params.append('file',file.file);
             params.append('isPermission','N');
             comApi.uploadFile(params)
             .then((res)=>{
                 if(res.status==200){
                     // 做修改页面时接收的数据也要做这个处理,删除图片时才不会出错
                     let picture={};
                     picture.index=detail.index // 添加index是为了方便删除时找到对应的图片,防止删除失效
                     picture.attachmentId=res.DATA.attachId;
                     picture.attachmentName=res.DATA.attachName;
                     // 清除图片的状态
                     file.status='done'
                     vm.fileList.push(picture)
                 }else{
                     file.status='failed';
                     file.message='上传失败';
                     vm.$toast.fail('上传失败')
                 }
             })
             .catch((err)=>{
                 // 如果图片上传失败,页面上图片则显示上传失败
                     file.status='failed';
                     file.message='上传失败';
                     vm.$toast.fail('上传失败')
             })
         },
         // 图片上传失败重新上传
         clickPreview(file,datail){
             let vm=this;
             if(file&&file.status==='failed'){
                 vm.$dialog.confirm({
                       message:'是否尝试重新上传?',
                       theme:'round-button',
                       canfirmButtonText:'重新上传',
                       cancelButtonText:'删除',
                       canfirmButtonColor:'black',
                       cancelButtonColor:'#ee0a24'
                 }).then(()=>{
                     // 点击提示确认调用上传图片方法再次上传图片
                     vm.onReadIdCardback(file)
                 }).catch(()=>{
                     // 点击删除提示是否删除
                     vm.$dialog.confirm({
                         message:'确定要删除图片吗?',
                     }).then(()=>{
                         vm.fileList.splice(datail.index,1)
                     }).catch(()=>{})
                 })
             }
           },

           // 删除图片
           beforeDeleteBack(file,datail){
               let vm=this
               return new Promise((resolve,reject)=>{
                      vm.$dialog.confirm({message:'无确定删除图片?'})
                      .then(()=>{
                          if(file.status!=="failed"){
                              vm.pictureList.forEach((item,index)=>{
                                          if(item.index==detail.index){   // 判断删除的下标是否正确
                                                    vm.pictureList.splice(index,1) // 使用遍历找到的index去数组里面删除
                                          }
                              })
                          }
                          vm.$toast.success('删除成功');
                          resolve()
                      })
                      .catch((err)=>{
                           vm.$toast.success('已取消');
                           reject(err)
                      })
               })
           }
     }
}
</script>
Vant UploaderVant 组件库中的一个组件,用于实现文件上传功能。它支持拍摄照片和选择本地图片上传等多种形式。要使用 Vant Uploader 实现拍照和选择图片上传,你可以按照以下步骤进行: 1. 引入 Vant Uploader 组件:首先需要确保你的项目中已经安装并引入了 Vant 组件库,并且正确地引入了 Uploader 组件。 2. 使用 Vant Uploader 组件:在你的页面中添加 Uploader 组件,并设置相应的属性来实现拍摄照片和选择图片的功能。 3. 拍照功能:通过设置 `before拍摄` 钩子函数,可以在用户点击拍照按钮时被调用。在这个函数中,你可以调用手机或电脑的摄像头进行拍摄,并将拍摄的照片作为文件传递给 Uploader 组件。 4. 选择图片功能:通过设置 `accept` 属性为 `"image/*"`,可以限制上传的文件类型为图片。当用户点击上传按钮时,可以选择本地的图片文件进行上传。 以下是一个简单的示例代码: ```html <van-uploader action="你的上传服务器地址" :before拍摄="beforeCapture" accept="image/*" @change="onChange" > <div slot="upload"> <van-icon name="photograph" /> <van-button type="primary">上传图片</van-button> <div class="van-uploader__tip">支持拍摄或选择图片上传</div> </div> </van-uploader> ``` ```javascript export default { methods: { beforeCapture() { // 获取摄像头权限并拍照的逻辑代码 }, onChange(event) { // 处理文件上传成功或失败的逻辑代码 } } }; ``` 请注意,实际的拍照和上传逻辑需要你根据具体的业务需求和开发环境来编写,例如使用 HTML5 的 getUserMedia API 来访问摄像头等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

代码De搬运工

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

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

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

打赏作者

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

抵扣说明:

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

余额充值