微信小程序> 微信小程序如何将本地图片文件上传到服务器?wx.chooseImage&wx.uploadFile方法使用案例以及微信小程序如何获取input框的值。

微信小程序如何将本地图片文件上传到服务器?wx.chooseImage&wx.uploadFile方法使用案例以及微信小程序如何获取input框的值。

浏览量:2211 时间: 来源:哈得儿洋


微信图片文件上传需要用到的两个API分别是:wx.chooseImage(选择本地文件) 和 **wx.uploadFile(上传文件)**将本地图片上传到服务器需要转换2次,首先是将本地的图片转换为服务器地址,其次是将这个服务器地址发送给后台接收。你从后台拿到一个方法a,你接收到这个方法a来处理图片,然后你再去后台拿到一个方法b,你接收到这个方法b来上传已经处理过的图片,就是这个意思。后台会给给一个文件上传的接口,专门用作本地文件和转换为服务器地址,例如:

除此之外, 还会给一个请求接口,也就是你需要发起请求,将这个图片提交给后台的接口(不放接口图片咯)

以上面的图片为例,一般在小程序里面有input输入框都会给外层包裹一个form表单,

form  bindsubmit='personIden'    view class='uploadFilesWrap'     view class="uploadTittle"上传工作证/view      view class='uploadText1'             text*/text             text仅限PNG、JPG格式,大小限制在3M以内/text        /view         view class='uploadText2'            text*/text             text 企业营业执照仅用于审核,不会向第三方透露,请放心上传/text        /view        view  bindtap='updata' class='myPhoto'            image src='{{url+uploadImg}}' wx:if='{{uploadImg}}' mode='scaleToFill' class='myImg'/image                               image src='/img/person/index/14.png' wx:else class='myImg'/image      /view    /view   button class='btn-upload' form-type='submit'           text提交审核/text    /button  /form    // 步骤:1,给from表单加一个bindsubmit='yourName',    //       2,在提交处最好用button按钮 给button按钮一个form-type='submit'     // 以上两步是成对出现的,配合使用的。

给图片框绑定一个函数,我这里绑定的updata,这个函数用于在你将本地的图片选中之后,把地址转换为服务器地址。我上面给form表单加了一个bindsubmit=‘personIden’,也相当于给form表单绑定的提交函数,只不过,这个函数有特殊功能,专门用作input框的提交。bindsubmit='personIden’函数是用来将所有输入框和图片地址(已经转换为服务器图片地址)的内容,全部提交给后台服务器保存。
按照这个思路,我们需要先处理图片,填写updata函数的内容:

  1. 首先需要给初始数据定义一个盛放处理之后的图片的容器:
const app = getApp() //声明引用全局变量data:{ uploadImg: “ ”,//用于盛放下面我处理成服务器地址之后的图片  url: app.globalData.url  //全局url}
  1. 用后台给的上传文件接口处理选中的本地图片
updata() { var that = this ; wx.chooseImage({   //微信封装的选择本地图片或相机拍照的API count : 1,  //图片上传的数量 sizeType:[ 'original', 'compressed' ],  //上传图片的合法值,原图|压缩图 sourceType:['album', 'camera'],  //上传图片的方式  本地|相机 success(res) {  //这里的成功请求执行的内容是我们的图片选择成功  对应的是wx.chooseImage的api成功     wx.uploadFile({   //微信封装的上传文件到服务器的API             url: app.globalData.url+'/upload/index/upload',  //域名+上传文件的请求接口            filePath: res.tempFilePaths[0],  // tempFilePath可以作为img标签的src属性显示图片 服务器图片的路径             name: 'image',  //上传到服务器的参数,自定义,我定义的是image            header:{                   "Content-Type":"multipart/form-data;charset=utf-8",                   "accept":"application/json",                    "Authorization":"Bearer .."              },       // header非必填项,具体作用见官方文档、                success(res) {        //这里的成功请求执行的内容是我们的图片上传到服务器成功 对应的是wx.uploadFile的api成功                  console.log(res.data)                    var data = JSON.parse(res.data)          //从打印结果可以看出来我们打印的对象里面是字符串类型,所以要用JSON.parse将里面的内容序列化转换为json格式 只针对我的这个数据,具体需不需要这一步要看打印的数据结果                    that.setData({                        uploadImg: data.url.filePath   //将图片转换之后的服务器地址data.url.filePath(打印结果显示我的是data.url.filePath)推到data里面定义的空容器updataImg。html界面的显示也是用的这个路径,值得注意的是html里面要加上url域名                    })                    console.log(that.data.uploadImg)                }              })           }      })   }

3.将这个文件提交给后台服务器保存

personIden(e) {    var that = this;   var uploadImg = that.data.uploadImg;    //已经经过处理的图片赋值给uploadImg    console.log ('form发生了submit事件,携带的数据为:',e.detail.value)  //打印提交的内容    var val = e.detail.value;   //获取此页的所有输入框的value值     val.Img_url = uploadImg  //把图片文件路径追加给val,因为打印发现img_url不在val对象中,单独被拿出来了,img_url是后台接口参数     wx.request({          url: app.globalData.url + '/rc/User/personal_add',  //请求提交的接口           header: {            'content-type': 'application/json' // 默认值          },            method: 'POST',  //post请求方式             data: { val },  //将输入的输入框value和图片路径反馈给后台             success(res) {                  console.log(res)                wx.showToast({                  title: '提交成功',                icon: 'success',                  duration: 2000           })          }        }) }

以上就是如何将本地图片文件上传到服务器的具体操作详解了,其中也涉及了微信小程序如何获取到input的输入内容,上传到服务器。谢谢阅读。

小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎