小程序图片上传主要代码,多张/单张上传,删除和预览

简介:本章主要记录微信小程序图片上传功能的实现过程,以及开发过程中遇到的问题(菜鸟日记),主要分为:4个part
p1:wx.chooseImage 从本地相册选择图片或使用相机拍照
p2:wx.uploadFile 将本地资源上传到服务器
p3:提交图片链接(有时候包含其他页面参数)
p4:附加图片预览和长按删除


步骤一:wx.chooseImage

图片上传第一步首先是选择图片,微信小程序为我们提供了wx.chooseImage方法,活不多说先上文档示例(点我查看官方文档):

文档

文档里有所有参数的对应解释,在这里我只介绍常用的几个,大家对照图片来看比较清晰明了
1. count:每次最多可以选择的图片张数,默认为9张
2. sizeType:所选的图片的尺寸—>original(原图)—>compressed(压缩图)
3. sourceType:图片来源—>album(从相册选图)—>camera(使用相机拍照)
4. res.tempFilePaths:文件本地路径
5. res.tempFiles:图片的本地临时文件列表,包含图片路径path和图片大小size,单位为B
在success回调里就可以执行我们的下一步啦!

步骤二:wx.uploadFile

这一步主要是在拿到图片的本地临时路径后传给后台,获取到新的图片地址(点我查看官方文档

文档

还是先来看几个参数说明:
1. url:服务器地址,就是传图片的接口
2. filePath:要上传文件资源的路径 (本地路径),不明白的童鞋往上翻,看tempFilePaths,tempFiles
3. name:文件对应的 key,也就是后台接收图片路径的字段名
4. formData:HTTP 请求中其他额外的form data
在实际项目中我们会涉及到多张图片上传,网上已经有大神用递归的方法对上传做了封装,我就不献丑了,直接把链接粘在这里:小程序wx.uploadFile上传问题
在使用这个方法的过程中我遇到了一个问题,就是当我上传多张的时候总是只显示一张图片,这是怎么回事呢?在我一番查找后发现原来是因为每次执行上传方法都会创建新的Promise对象,导致我们的数据不能连接起来,原文我找不到了,给大家贴个我的代码好了

uploadModal(filePaths, successUp, failUp, i, length) {
    let that = this;
    let upload = new Promise(function (resolve, reject) {
    function timeout(filePaths, successUp, failUp, i, length) {
          wx.uploadFile({url: xxxx,//(填自己的接口地址就可以)
          filePath: filePaths[i],
          name: 'multipartFile',
          formData: {},
          success: (res) => {
            successUp++;
            var data = JSON.parse(res.data);
          },
          fail: (res) => {
            failUp++;
          },
          complete: () => {
            i++;
            if (i == length) {
              wx.showToast({
                title: successUp + '张上传成功,' + failUp + '张上传失败!',
                icon: 'none',
                duration: 2000,
                mask: true
              })
              resolve();
            } else { //递归调用uploadDIY函数
              timeout(filePaths, successUp, failUp, i, length);
            }
          },
        });
      };
      timeout(filePaths, successUp, failUp, i, length)
    })
    return upload;
  },

在wx.uploadFile外层套了一个timeout方法,递归调用的时候就调它好啦,成功解决!感谢那位不知名的大神

步骤三:提交图片链接

因为我在提交图片的时候也要提交一些别的参数,所以我就写了个一个submit方法来处理图片链接和其他params,我用wx.request方法来提交,这个大家都懂,我就不废话了

附加小方法:预览和删除

图片预览(点我查看官方文档

previewImg(e) {
    let url = e.currentTarget.dataset.url;
    wx.previewImage({
      current: url,
      urls: this.data.imgs
    })
},

长按删除

//js部分
deleteImage(e) {
    let that = this;
    let imgs = that.data.imgs;
    let index = e.currentTarget.dataset.index;
    wx.showModal({
      title: '提示',
      content: '确定要删除此图片吗?',
      success: function (res) {
        if (res.confirm) {
          imgs.splice(index, 1);
        }
        that.setData({
          imgs
        });
     }
  })
},

<!-- 图片是循环出来的所以写了item -->
<image src="{{item}}"  bindtap="previewImg" bindlongpress="deleteImage" data-url="{{item}}" data-index="{{index}}"></image>

完结~~~
第一次写文章求鼓励!喜欢的帮我点个赞哦,不明白的地方可以留言,我写的不对的地方请大佬们指教,我会改的,毕竟我只是个小菜鸟(掩面)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容