博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序上传图片
阅读量:4591 次
发布时间:2019-06-09

本文共 4326 字,大约阅读时间需要 14 分钟。

1.因为小程序的api描述都比较简单,并没有wxml及wxss的描述,要想实现小程序demo上的上传图片样式首先需要下载weui.wxss并引入到项目中

小程序版weui下载地址:https://github.com/Tencent/weui-wxss

可以将整个文件下载下来,将其中的dist文件夹导入到独立的小程序中作为参考

把weui.wxss放到自己的项目中后,在app.wxss中import weui.wxss 作为全局样式

/**app.wxss**/@import "weui.wxss";  

照着domo把wxml相关内容复制进自己的文件中

图片上传
{ {images.length}}/9

 根据demo修改相关js:

 首先实现选择图片功能

Page({  /**   * 页面的初始数据   */  data: {    images: [],//临时图片地址  },  chooseImage: function () {    var that = this;    wx.chooseImage({      count: 9, // 默认9      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有      success: function (res) {        console.log(res);        var tempFilePaths = res.tempFilePaths        that.setData({          images: that.data.images.concat(tempFilePaths)        })         }    })  },  previewImage: function (e) {    wx.previewImage({      current: e.currentTarget.id, // 当前显示图片的http链接      urls: this.data.images // 需要预览的图片http链接列表    })  } })

 在此基础上进行上传图片,上传文件官方方法如下:

wx.uploadFile({      url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址      filePath: tempFilePaths[0],      name: 'file',      formData:{        'user': 'test'      },      success: function(res){        var data = res.data        //do something      }

 发现了尴尬的问题,发现上传图片一次只能传一张

参考了https://www.cnblogs.com/xjwy/p/6956120.html的递归方法,进行多张图片的上传

方法如下:

function uploadimg(data) {  var that=this;  var i = data.i ? data.i : 0,//要上传的图片    success = data.success ? data.success : 0,//上传成功的个数    fail = data.fail ? data.fail : 0;//上传失败的个数  wx.uploadFile({    url: data.url, //开发者服务器 url    filePath: data.path[i],    name: 'file',    formData: {      'user': 'test'    },    success: function (res) {      success++;      //do something    },    fail: function () {      fail++;    },    complete: function () {      i++;      if (i == data.path.length) {        console.log("success:" + success + "fail" + fail);      }else{        data.i = i;        data.success = success;        data.fail = fail;        uploadimg(data);      }    }  })} 

点击上传按钮后调用该方法,进行图片上传

uploadImg: function (e) {    var that = this;    if (that.data.images.length > 0) {      uploadimg({//调用图片上传uploadimg方法        url:  that.data.upImgUrl,//这里是你图片上传的接口        path: that.data.images//这里是选取的图片的地址数组      });    } else {        console.log("没有可上传的文件");    }  }

  全部js代码如下

function uploadimg(data) {  var that=this;  var i = data.i ? data.i : 0,//要上传的图片    success = data.success ? data.success : 0,//上传成功的个数    fail = data.fail ? data.fail : 0;//上传失败的个数  wx.uploadFile({    url: data.url, //开发者服务器 url    filePath: data.path[i],    name: 'file',    formData: {      'user': 'test'    },    success: function (res) {      success++;      //do something    },    fail: function () {      fail++;    },    complete: function () {      i++;      if (i == data.path.length) {        console.log("success:" + success + "fail" + fail);      }else{        data.i = i;        data.success = success;        data.fail = fail;        uploadimg(data);      }    }  })}Page({  /**   * 页面的初始数据   */  data: {    images: [],//临时图片地址    upImgUrl: 'https://........'//上传图片服务器地址  },   chooseImage: function () {    var that = this;    wx.chooseImage({      count: 9, // 默认9      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有      success: function (res) {        console.log(res);        var tempFilePaths = res.tempFilePaths        that.setData({          images: that.data.images.concat(tempFilePaths)        })      }    })  },  previewImage: function (e) {    wx.previewImage({      current: e.currentTarget.id, // 当前显示图片的http链接      urls: this.data.images // 需要预览的图片http链接列表    })  },  uploadImg: function (e) {    var that = this;    if (that.data.images.length > 0) {      uploadimg({        url:  that.data.upImgUrl,//这里是你图片上传的接口        path: that.data.images//这里是选取的图片的地址数组      });    } else {        console.log("没有可上传的文件");    }  }})

 小程序还在摸索阶段没实际开发测试过,暂时先记录下

转载于:https://www.cnblogs.com/Anne3/p/8884270.html

你可能感兴趣的文章
android新手关于左右滑动的问题,布局把<android.support.v4.view.ViewPager/><ImageView/> 放在上面就不行了。...
查看>>
深入理解DIP、IoC、DI以及IoC容器
查看>>
赋值文件
查看>>
Vue 数组 字典 template v-for 的使用
查看>>
蓝牙模块选择经验谈
查看>>
java中==和equals
查看>>
CCActionPageTurn3D
查看>>
python random
查看>>
esp32-智能语音-cli(调试交互命令)
查看>>
netty与MQ使用心得
查看>>
关于dl dt dd 文字过长换行在移动端显示对齐的探讨总结
查看>>
swoolefy PHP的异步、并行、高性能网络通信引擎内置了Http/WebSocket服务器端/客户端...
查看>>
Python学习笔记
查看>>
unshift()与shift()
查看>>
使用 NPOI 、aspose实现execl模板公式计算
查看>>
行为型模式:中介者模式
查看>>
How to Notify Command to evaluate in mvvmlight
查看>>
33. Search in Rotated Sorted Array
查看>>
461. Hamming Distance
查看>>
Python垃圾回收机制详解
查看>>