微信小程序 多图上传解决方案

简介: 为了使代码体积小 我这里讲多图上传 封装到单独的一个js 页面的js调用他 // pages/home/home.js var upload = require('../../style/upload.

为了使代码体积小 我这里将多图上传 封装到单独的一个js 页面的js调用他
image

// pages/home/home.js
 var upload = require('../../style/upload.js');
Page({
  /**
   * 页面的初始数据
   */
  //跳转页面
  btn:function(e){
    wx.navigateTo({
      url: '/pages/sechealth/sechealth',
    })
  },
  tijian:function(e){
    var that=this;
    upload.Much("https://wx.caoman.net/WXdiagnos/MuchUpload",function(res){
      
      var obj=JSON.parse(res.data);
      console.log(obj);
      var url="https://wx.caoman.net"+obj.url;
      that.setData({
        tijianPic: that.data.tijianPic.concat(url),
        imglist:1
      });
      console.log(that.data.tijianPic);
    })
  },
  data: {
    //面部图片路径
    facePic:[],
    //体检图片路径
    tijianPic:[],
    imglist:0,///控制体检报告是否显示

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
   
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})

代码 tianjia 函数 为点击时触发的函数调用了 upload.js里边的函数 下面我们看 upload.js 代码

//上传一张图片
var upload=({
Single:function(Funurl,fn){
  wx.chooseImage({
    count:1, ///最多可以选择一张图片
    sizeType:['original','compressed'],//原图或压缩图
    sourceType:['album','camera'],//图片来源
    success: function(res) {
      const tempFilePaths=res.tempFilePaths;//相当于src路径
      //console.log(tempFilePaths);
      wx.uploadFile({
        header:{
          "Content-Type":"multipart/form-data"
        },
        name:'file',
        url:Funurl,
        filePath: tempFilePaths[0],
        success(res){
          fn(res);
        }
      })
    },
  })
},
//上传多张图片
Much:function(Funurl,fn){
  var list=new Array();
 wx.chooseImage({
   count:9,//最多可以选择9张图
   sizeType: ['original','compressed'],
   sourceType:['album','camera'],
   success: function(res) {
     const tempFilePaths=res.tempFilePaths;
     for (var i = 0; i < tempFilePaths.length;i++){
       wx.uploadFile({
         url: Funurl,
         name: 'file',
         filePath: tempFilePaths[i],//第几张图片
         header: {
           "Content-Type": "multipart/form-data"
         },
         success(res) {
          fn(res);
         },
         fail(res) {
           console.log(res.data);
         }
       })
     }
   },
 })
}
})
module.exports=upload;

在upload.js中 我们看到页面调用upload.js的函数了,我们会发现 该函数使用的是 for 将文件循环的上传了,,我在测试时发现 上传文件是异步执行的 这是 在循环完 在调用回调函数,发现回调函数的值是空的,为什么呢,

因为js的异步执行不会阻塞当前线程 当for循环执行完了 第一个上传文件还没有执行完,当函数回调成功后,里边的上传文件异步才依次执行完毕, 我们知道 数组是可以追加的 这时可以让函数回调多次 依次 给

tijianPic 变量追加数组值 当执行完后 我们在console.log() 发现 上传文件了三次 在回调后的代码块里输出 也是三次 那么三次 我们不停的在数组上追加 即上传了多个文件 返回的每个路径我们都存到变量

如果代码还解决不了 请仔细阅读 和测试 上部分代码为 实践项目中部分代码

相关文章
|
12天前
|
小程序 前端开发 安全
小程序全栈开发中的跨域问题及其解决方案
【4月更文挑战第12天】本文探讨了小程序全栈开发中的跨域问题及其解决方案。跨域问题源于浏览器安全策略,主要体现在前后端分离、第三方服务集成和数据共享上。为解决此问题,开发者可采用CORS、JSONP、代理服务器、数据交换格式和域名策略等方法。实践中需注意安全性、兼容性和性能。通过掌握这些解决方案,开发者能更好地处理小程序的跨域问题,提升用户体验。
|
1月前
|
移动开发 小程序 API
微信外部浏览器或短信链接唤起微信小程序的解决方案
微信外部浏览器或短信链接唤起微信小程序的解决方案
138 1
|
2月前
|
小程序
小程序一直未提审的原因及解决方案
小程序一直未提审的原因及解决方案
27 0
|
2月前
|
移动开发 小程序 API
【小程序质量提优解决方案】(三)内嵌H5页面访问受限
【小程序质量提优解决方案】(三)内嵌H5页面访问受限
85 0
|
2月前
|
移动开发 小程序 JavaScript
【小程序质量提优解决方案】(二)内嵌H5加载异常(404)
【小程序质量提优解决方案】(二)内嵌H5加载异常(404)
35 0
|
3月前
|
存储 自然语言处理 数据安全/隐私保护
微信公众号后台回复5s重试解决方案和思路
微信公众号后台回复5s重试解决方案和思路
67 0
|
30天前
|
JSON 小程序 C#
微信网页授权之使用完整服务解决方案
微信网页授权之使用完整服务解决方案
|
1月前
|
小程序 JavaScript
在使用微信小程序开发中用vant2框架中的Uploader 文件上传wx.uploadFile无反应和使用多图上传
网上有的说是bind:after-read="afterRead"的命名问题不支持-,但是我这儿执行了console.log("file",file);证明函数运行了。后来发现是multiple="true"原因开启了多图上传,如果是多图上传的话file就是数组了
26 2
|
2月前
|
小程序 定位技术 Android开发
小程序质量提升丨定位问题解决方案(错误码11)
小程序质量提升丨定位问题解决方案(错误码11)
28 0
|
2月前
|
小程序
小程序一直未上架的原因及解决方案
小程序一直未上架的原因及解决方案
50 0

热门文章

最新文章