小程序--剖析小程序上传文件

前言html

小程序开发的过程当中,若是你涉及到文件的上传,就须要使用微信提供的API去上传文件:小程序

wx.uploadFile()

官方文档的解释这里就很少介绍了,主要看一下这个方法具体如何使用以及为何这样使用。微信小程序

正文api

咱们能够先看一下该API的参数说明:安全

其实wx.uploadFile的操做是你把要请求的数据以及要请求的服务器URL传递给微信服务器,微信服务器再拿着这些数据进行三方服务器请求。具体可参见下图:(根据本身的理解画的,若是不对,欢迎指正)服务器

因此url也就是咱们平时本身去请求咱们本身的服务器接口的地址,若是你的服务器须要校验session或者token,你能够在formData中添加,例如把须要的uid放到里面:微信

var formData = { uid: app.globalData.uid, sessionKey: wx.getStorageSync("SESSIONKEY") };

 

function upLoadFile(url, filePath, name, formData, success, fail) { wx.uploadFile({ url: url, filePath: filePath, name: name, header: { 'content-type': 'multipart/form-data' }, formData:formData, //请求额外的form data
    success:function(res) { console.log(res); if(res.statusCode ==200){ typeof success == "function" && success(res.data); }else{ typeof fail == "function" && fail(res.data); } }, fail: function (res) { console.log(res); typeof fail == "function" && fail(res.data); } }) }

我这里直接对上传文件进行了封装,微信服务器经过咱们给他的数据向咱们的服务器发送数据请求,请求成功后,微信服务器会对咱们本身的服务器返回的信息进行包装,放到res.data里面,这样咱们就能够直接从res.data中获取到咱们的服务器给咱们反馈的信息了。 网络

 

为何要这么作?而不是直接由咱们向本身的服务器发送请求呢?session

 常规来讲,咱们直接调用咱们本身服务器的接口,而后咱们本身的服务器返回数据小程序端便可。可是从uploadFile操做来讲,实际上是微信服务器把本身当作了中转站,全部的发送都要经过微信中转进行操做。我的以为这样作的缘由以下:app

1.微信服务器有本身的一套临时图片连接,对于咱们本身的服务器而言没法识别。

2.鉴于安全考虑,微信服务器会对图片进行留存,保证内容在微信平台上的合法性。

 

若是有其余的缘由,也能够留言!我也在微信小程序开发中心作了提问,最新信息能够参见这里

 

 

参考文档

1.网络请求

相关文章
相关标签/搜索