微信小程序 - Promise 封装多张图片上传

微信小程序! 一次http请求可上传多张图片、无依赖 xp-multipart github源码 源码demo是基于uniapp的,工具包在 utils目录下) 一、概述 uniapp官方提供的uni.uploadFile或 微信官方wx.uploadFile 一次只能上传一个图片,xp-multipart既可以用来发送普通的表单数据,也可以同时上传多个图片文件 为微信小程序封装的,其余平台暂未考虑;app和h5直接使用uni.uploadFile即可 底层依然使用wx.request 进行封装,因此小程序管理后台设置了request的合法域名可以 阅读详情

前言

最近,项目需要新加一个用户发布文章的功能,因为小程序选取的图片都是临时路径,所以需要上传到服务器转为网络图片路径再发布出去。但是小程序上传图片只支持单张图片,在这种情况下图片的上传完成后输出的顺序、判断图片是否全部上传完成等,都是一些需要注意的点。在 Promise 的中有一个 Promise.all 的方法(简单来说就是当所有的异步请求成功后才会执行),在这个方法的帮助下,这些问题都迎刃而解。

代码

export const uploadImage = (tempFilePaths)=>{
  return new Promise((presolve,preject)=>{
    if({}.toString.call(tempFilePaths)!='[object Array]'){
      throw new TypeError(`上传图片参数 tempFilePaths 类型错误!`)
    }
    //路径数组为空时  不上传
    if(tempFilePaths.length==0){
      presolve([])
      return
    }
    wx.showLoading({
      title: '上传图片中...',
      mask:true
    });

    getToken().then(token => {
      let uploads = []
      tempFilePaths.forEach((item,i)=>{
        uploads[i] = new Promise ((resolve)=>{
          wx.uploadFile({
            url:'http://www.baidu.com/post',
            filePath: item,
            name: 'file',
            heade
微信小程序-图片上传(基于Promise.all实现) 如你所了解到的,微信小程序的wx.uploadFile每次仅支持单文件上传。但在实际的应用场景中往往有多文件上传的需求。因此我打算用Promise.all对wx.uploadFile进行一层封装,让其能够实现多文件上传。说在前面:若你了解【上传失败的图片之前的图片实际上传了,上传失败的图片之后的图片不再上传】。因此,若你的需求是在一次多图任务上传过程,必须每张图片上传成功才算本次多图上传任务成功,那么Promise.all封装很适合你。 阅读详情

相关推荐

微信小程序 - Promise 封装多张图片上传(后续)

问题 昨天在使用封装promise上传图片时,又发现了一个小问题(主要因为业务的需要) 如果,传入的数组中有一些已经是网络图片路径时,上传图片就会出现报错,导致整个图片上传都崩了。原因是wx.uploadFile上传只接受临时图片路径。 所以,在上传前还要做图片url的判断。 改进 export const uploadImage = (tempFilePaths)=>{ ...

陈同学的博客 1853

uniapp小程序上传单张/多张照片到服务器(封装方法)

【代码】uniapp小程序上传单张/多张照片到服务器(封装方法)

weixin_51014776的博客 2267

微信小程序 ES6Promise.all批量上传文件实现代码

微信小程序 ES6Promise.all批量上传文件实现代码 客户端 Page({ onLoad: function() { wx.chooseImage({ count: 9, success: function({ tempFilePaths }) { var promise = Promise.all(tempFilePaths.map((tempFilePath, index) => { return new Promise(function(resolve, reject) { wx.u

微信小程序 Vant Weapp Uploader 上传图片编码模板(上传单张图片、上传多张图片、上传图片操作补充)

微信小程序 Vant Weapp Uploader 上传图片编码模板(上传单张图片、上传多张图片、上传图片操作补充)

weixin_52173250的博客 631

微信小程序接口封装、原生接口封装、request、promise封装

相信大家在做微信小程序的时候会有很多地方需要调用接口,就和pc以及手机端一样,多个页面多次调用会有很多状态,那为了节省大家的开发时间就会需要给请求的接口做一些简单封装,便于开发,在这里我用了两个js,一个js封装的是方法名,另外一个是接口名,统一管理 下面这个是统一的接口方法封装 const baseURL = "接口名"; const request = params => { const token = wx.getStorageSync("token").token; return ne

九州县令的博客 870

微信小程序上传多张图片

微信小程序官方文档上传图片贼简单 wx.chooseImage({ success (res) { const tempFilePaths = res.tempFilePaths wx.uploadFile({ url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址 filePath: t...

Schrodinge的博客 577

微信小程序封装(多)图片上传

1.uploadImg.js /** * (多)图片上传方法(该方法接受一个options:需要什么就传什么) * @url: string,上传的路径(非必传)) * @count: number,允许单次上传的数量(非必传:1-9) * @fn: function,操作本地图片路径的回调函数(非必传) * failCallback:function,某张照片上传失败的回调函数(非...

Arbort 1221

百度AI识别接口的通用封装Promise微信小程序

百度AI开放平台是目前市场上主流开放接口平台之一,新用户还可领取免费资源(适合我这种勤俭节约的人),本篇就来介绍如何对百度AI的开放接口进行通用封装

coderYYY的博客 683

基于uni-app图片上传JS插件

使用前先new 一下 所有方法均返回 promise 对象 可使用then() 写后续业务 或 使用 async await 预览一下 体验一下 H5 地址 http://uni_upload.gek6.com/uploader/#/ 服务端返回示例 { "code":0, "msg":"上传成功", "data":"http://www.test.com/uploads/201902...

weixin_33825683的博客 1091

uniapp 微信小程序 上传图片至七牛云的详细用法解析 -- 图片上传 (单图,多图)

在开发过程中,上传图片,视频,文件等是非常常见的需求,但。。。前端上传会非常的占用服务器资源,而,小编我则是在公司的项目开发中了解到了七牛云的上传功能 这篇帖子主要是讲解 - 七牛云的图片上传 首先,在准备使用七牛云前,我们要先下载好,qiniuUploader.js 这个文件,下载地址,小编我已经附在下面了。 七牛云:https://github.com/gpake/qiniu-wxapp-sdk#api PS:里面也有对应的说明哦,建议先看下,再回来看小编下面的内容。 ...

虎 序的博客 2830

微信小程序-网络相关的二次封装

【代码】微信小程序-网络相关的二次封装

chen_p_cheng的博客 594

微信小程序 批量上传图片封装

【代码】微信小程序 批量上传图片封装

honyudeng的博客 627

uniapp的app兼容微信小程序上传图片

是uniapp做多端兼容的一种手段,在对应平台编译代码时,只会编译代表对应平台的代码。第二种:前端传的图片地址是后台返回来,然后调用接口一次性传递过去的。其实这种最容易了,直接传一个formData就一起传过去了,因为传的不是文件不是二进制数据。而且是直接发送图片,不是发送图片地址。1.app和小程序的区别:app支持多张图片一次性使用files字段上传多张图片。2.后台对接方面:这里有一点需要注意,就是你们后端需要接收的数据的要求。二、如果后台不能改上传图片同时返回图片地址的方法的话,前端的相关代码。

m0_73396199的博客 944

微信小程序----封装上传图片以及获取图片【wx.chooseMedia wx.uploadFile】

【代码】微信小程序----封装上传图片以及获取图片【wx.chooseMedia wx.uploadFile】

heavenz19的博客 1140

ready等方法 微信小程序_微信小程序开发一些经验

对于微信小程序开发入门,还是比较简单的,只需要具备基本的css+js知识就可以了,成本比较低。 写了小程序和RN之后,有一种原生很笨重的感觉,就是小程序或者是RN等这些新的开发方式在效率上面真的有比较大的优势,唯一不足就是运行速度了(使用Canvas就会有这样子的感觉)。 感觉目前所接触的种类前端开发(包括移动端),都是基本一个套路:UI,网络,数据保存,富文本,图片/视频。 本文也是从这几个方向...

weixin_39847945的博客 791

微信小程序wx.request封装

wx.request进行封装 首先是封装代码 httpUtil.js function request(url, data, method, title) { wx.showNavigationBarLoading(); return new Promise((resove, reject) => { wx.request({ url: url, m...

换日线的博客 756

【免费下载】 微信小程序多文件上传利器:wx.uploadFile 的批量上传解决方案

微信小程序多文件上传利器:wx.uploadFile 的批量上传解决方案 【下载地址】微信小程序同时上传多个文件wx.uploadFile 本资源文件提供了在微信小程序中同时上传多个文件的解决方案。微信小程序的 `wx.uploadFile` API 原本只支持单个文件上传,但通过本资源文件中的方法,您可以实现同时上传多...

gitblog_06544的博客 1424
上一篇: 一个 Duang~ 的CSS3动画
下一篇: 微信小程序 - Promise 封装多张图片上传(后续)
WahFung_
博客等级 码龄8年 13粉丝 30原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值