微信小程序 wx.uploadFile無(wú)法上傳解決辦法
微信小程序 wx.uploadFile無(wú)法上傳解決辦法
微信安卓客戶端無(wú)法使用wx.uploadFile上傳文件的問(wèn)題有不少開發(fā)者都遇到。
我也因?yàn)橐恢辈荒芙鉀Q,硬著頭皮提交審核最后被拒(抱著審核者最好用iOS檢測(cè)的心態(tài),不巧審核我應(yīng)用的用的是安卓),才嘗試使用第三方的手段解決。
最終我是用了七牛第三方存儲(chǔ)的方式,將文件直接上傳至七牛的儲(chǔ)存的空間上再回調(diào)使用。
當(dāng)然像又拍云,萬(wàn)象優(yōu)圖這些第三方存儲(chǔ)源都可以采用這種思路。
首先是將七牛的https上傳域名放進(jìn)小程序的域名名單中。
這里我使用的是七牛華東區(qū)的域名https://up.qbox.me。
微信小程序wx.uploadFile采用的是multipart/form-data方式上傳,即表單上傳。
根據(jù)七牛的官方文檔說(shuō)明 http://developer.qiniu.com/docs/ ... up/form-upload.html

主要需要的就是file(文件本身)和token(上傳憑證)。
然后在服務(wù)端部署獲取上傳憑證的業(yè)務(wù)代碼,通過(guò)wx.request請(qǐng)求獲取token。
var that = this;
wx.request({
url: 'https://xxx/token',
method: 'POST',
data: {},
header: {
'content-type':'application/x-www-form-urlencoded'
},
success: function(res) {
that.token = res.data; //默認(rèn)返回一個(gè)token,賦值給已經(jīng)有的token屬性。這里只是示例,具體根據(jù)需求可自行設(shè)定。
},
fail:function (res) {
console.log(res)
}
})
具體如何部署七牛憑證代碼,可參考http://78re52.com1.z0.glb.cloudd ... %9C%8D%E5%8A%A1.pdf
獲得憑證后就可以通過(guò)wx.uploadFile上傳了。具體代碼為:
var that = this;
var key = Math.random().toString(36).substr(2); //生成一個(gè)隨機(jī)字符串的文件名
wx.uploadFile({
url: 'https://up.qbox.me',
filePath: flie,
name: 'file',
formData:{
'token': that.token,//剛剛獲取的上傳憑證
'key': key//這里是為文件設(shè)置上傳后的文件名
},
success: function(r){
var data = r.data;//七牛會(huì)返回一個(gè)包含hash值和key的JSON字符串
if(typeof data==='string')data = JSON.parse(data.trim());//解壓縮
if(data.key){
... //這里就可以直接使用data.key,文件已經(jīng)上傳成功可以使用了。如果是圖片也可以直接通過(guò)image調(diào)用。
}
},
fail:function (res) {
console.log(res)
}
})
最終采用這種方式解決了安卓無(wú)法上傳文件的問(wèn)題,當(dāng)然上傳自身服務(wù)器的問(wèn)題還是有待解決。
不過(guò)對(duì)于急需解決方案的開發(fā)者還是提供了一個(gè)可行的方案。
現(xiàn)在利用第三方圖源或存儲(chǔ)源是一個(gè)普遍的方案,很多存儲(chǔ)源例如七牛,又拍云,萬(wàn)象優(yōu)圖都提供了免費(fèi)的空間供開發(fā)者使用。
建議大家也多做這方面的架構(gòu)和嘗試。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站 的支持!
相關(guān)文章
微信小程序后臺(tái)解密用戶數(shù)據(jù)實(shí)例詳解
這篇文章主要介紹了 微信小程序后臺(tái)解密用戶數(shù)據(jù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
微信小程序 animation API詳解及實(shí)例代碼
這篇文章主要介紹了 微信小程序 animation API詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10
JavaScript 實(shí)現(xiàn)點(diǎn)擊關(guān)閉全屏示例詳解
這篇文章主要為大家介紹了JavaScript 實(shí)現(xiàn)點(diǎn)擊關(guān)閉全屏示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

