微信小程序之----上传图片

  微信小程序上传图片用到的api

wx.chooseImage(OBJECT)wx.previewImage(OBJECT)wx.uploadFile(OBJECT)

这几个基本的api的使用方法可以去看微信小程序的官方文档------------官方文档-------这里就不重复赘述了

在此谈几点开发中会遇到的问题:

1.wx.chooseImage(OBJECT)

count: 一次最多选择的图片张数,默认是9(并且该值最大是9)

success会返回文件的临时路径-----

文件的临时路径,在小程序本次启动期间可以正常使用,如需持久保存,需在主动调用 wx.saveFile,在小程序下次启动时才能访问得到。

2.wx.previewImage(OBJECT)

urls:图片的链接地址数组(必须是链接的数组)

3.wx.uploadFile(OBJECT)

上传照片有两点限制: 1)每发起一次请求只能上传一张图片

2)最大并发限制是 10 个(图片及网络原因,使用并发上传时,每张图片上传成功的顺序不一定)

返回一个 uploadTask 对象,通过 uploadTask,可监听上传进度变化事件,以及取消上传任务

uploadTask.onProgressUpdate((res) => {
if (res.progress == 100) {
//上传成功
}})

当你想上传多张图片时,就需要多次发送请求;两种方式
一:采取并发上传的方式,但是并发最多是10个且上传成功存在不可控;因此一次图片不多于10张时可以采用
方法:用for循环每次更新上传的图片,并行发起10次请求
二:采取串行的方式,每次上传成功后再上传下一张 缺点是----上传多张时间将明显增加
wx.uploadFile({
url: url,
header: { 'content-type': 'multipart/form-data'},
filePath: picList[ 0],
name: 'file',
formData: {},
success: function (res) {
picList.splice( 0, 1);
//一次上传完成再次上传
wx.uploadFile({
...
})},
fail: function () {
}})

当上传图片大于10张时;为了避开小程序的并发限制,同时尽可能多的缩短上传时间---最优的方案是采取串并行结合的方式
------10张以内采用并行,超过10张后切换到串行
这里就不上代码了,思路有了,大家可以自行去实现

--------今天就写到这了,有想到的再来补充-----

你可能感兴趣的:(js,微信小程序)