uniapp使用uni-file-picker上传组件实现多文件上传功能

<uni-file-picker
       file-mediatype="all"
          v-model="fileList3" 
          mode="grid" 
          @select="select" 
          @progress="progress" 
          @success="success" 
       @delete ="deletephoto" 
          @fail="fail"
       ref="upload"
       limit="5"
      />
     </uni-file-picker>

组件代码

// // 选择上传触发函数
    select(e) {
    // 根据所选图片的个数,多次调用上传函数
     let promises=[]
     for (let i = 0; i < e.tempFilePaths.length; i++) {
       const promise =this.uploadFiles(e.tempFilePaths,i)
       promises.push(promise)
      } 
       Promise.all(promises).then(()=>{
        
      })
           },
   // 上传函数
   async uploadFiles(tempFilePaths,i){
      let that =this
       await uni.uploadFile({
         url: that.action, //后端用于处理图片并返回图片地址的接口    
         filePath:tempFilePaths[i],    
         name: 'file', 
         header:that.header,
         success: res => {    
         let data=JSON.parse(res.data) //返回的是字符串,需要转成对象格式   
         if(data.code==200){ 
          that.form.attachment.push(data.data)
          if(i==tempFilePaths.length-1)
           this.form.attachment=JSON.stringify(this.form.attachment);
          }
         },   
        fail: () => {
         console.log("err");
        }   
       })   
       
   },
   // 移出图片函数
   async deletephoto(){
    this.form.attachment = ''
   },

选择以及发生请求代码,可以实现多文件上传功能

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
对于使用Uni-App的开发者来说,可以使用Uni-File-Picker组件实现图片上传功能。下面是一个示例代码,展示了如何使用Uni-File-Picker组件上传图片: 1. 首先在页面的vue文件中引入Uni-File-Picker组件: ``` <template> <view> <uni-file-picker :count="1" @success="uploadSuccess" @fail="uploadFail" ></uni-file-picker> <button type="primary" @click="upload">上传图片</button> </view> </template> <script> export default { methods: { uploadSuccess(files) { console.log('上传成功', files); // 在这里处理上传成功后的逻辑 }, uploadFail(err) { console.log('上传失败', err); // 在这里处理上传失败后的逻辑 }, upload() { uni.chooseImage({ count: 1, success: (res) => { const tempFiles = res.tempFiles; if (tempFiles.length > 0) { uni.uploadFile({ url: 'http://your-upload-url', filePath: tempFiles[0].path, name: 'file', success: (res) => { if (res.statusCode === 200) { const data = JSON.parse(res.data); if (data.code === 0) { this.uploadSuccess(data.files); } else { this.uploadFail(data.message); } } else { this.uploadFail('上传失败'); } }, fail: (err) => { this.uploadFail(err.errMsg); } }); } }, fail: (err) => { console.log('选择图片失败', err); } }); } } } </script> ``` 在上面的示例中,Uni-File-Picker组件用于选择图片文件,并通过`count`属性限制只能选择1张图片。当选择成功后,会触发`success`事件,调用`uploadSuccess`方法进行上传成功后的处理;当选择失败后,会触发`fail`事件,调用`uploadFail`方法进行上传失败后的处理。 在`upload`方法中,首先使用`uni.chooseImage`选择图片,并通过`uni.uploadFile`将选中的图片上传到服务器。在上传成功后,通过`uploadSuccess`方法处理上传成功后的逻辑;在上传失败后,通过`uploadFail`方法处理上传失败后的逻辑。 需要注意的是,示例中的上传接口URL需要根据实际情况进行修改。另外,还可以根据需要添加进度条等其他功能来完善上传图片的交互体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值