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


前言

小程序開發的過程中,如果你涉及到文件的上傳,就需要使用微信提供的API去上傳文件:

wx.uploadFile()

官方文檔的解釋這里就不多介紹了,主要看一下這個方法具體如何使用以及為什么這樣使用。

正文

我們可以先看一下該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中獲取到我們的服務器給我們反饋的信息了。 

 

為什么要這么做?而不是直接由我們向自己的服務器發送請求呢?

 常規來說,我們直接調用我們自己服務器的接口,然后我們自己的服務器返回數據小程序端即可。但是從uploadFile操作來說,其實是微信服務器把自己當做了中轉站,所有的發送都要通過微信中轉進行操作。個人覺得這樣做的原因如下:

1.微信服務器有自己的一套臨時圖片鏈接,對於我們自己的服務器而言無法識別。

2.鑒於安全考慮,微信服務器會對圖片進行留存,保證內容在微信平台上的合法性。

 

如果有其他的原因,也可以留言!我也在微信小程序開發中心做了提問,最新信息可以參見這里

 

 

參考文檔

1.網絡請求


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM