微信小程式 如何上傳音視訊到百度雲Bos cloud BCE
阿新 • • 發佈:2019-01-02
在做了一系列調查之後,目前為止暫未發現有相關的文章,在此簡單記錄一下解決此問題的步驟,造福來人。
本人的解決方案參考了百度雲BOS官方文件,地址如下:
使用wx.uploadFile介面上傳。
其中,需要特別關注的是:
百度雲通過Post方式上傳Object,要求必須存在Policy,且Policy編碼格式為UTF-8.Policy的格式如下:
var policy = '{"expiration":"2018-05-01T12:00:00Z","conditions":[{"bucket":"你的bucket名稱"},{"key":"檔案儲存在BOS中的檔名"}]}'
var base64 = base64.encode(policy)
通過在小程式中引入Base64.js,可以輕鬆的將Policy轉為Base64編碼。接下來需要將這個Base64編碼通過HmacSHA256加密。
signature = CryptoJS.HmacSHA256("之前的base64編碼字串", "百度雲的SK").toString(CryptoJS.enc.Hex)
此時已經得到了百度雲上傳需要的簽名。
接下來通過呼叫微信小程式提供的API wx.uploadFile就可以了,程式碼如下:
wx.uploadFile({ url: 'https://zhiyu.bj.bcebos.com', filePath: '拍照。或者通過chooseImage,chooseVideo返回的完整路徑', name: 'file', // 注意:這個name一定不要更改,一定不要更改,一定不要更改 formData:{ accessKey:'百度雲提供的ak', policy:'上面提到的base64字串', signature:'上面提到的signature簽名', key: '檔案儲存在BOS中的檔名', // 注意:這個key必須與policy中的key保持一致,否則會報錯 'Content-Type':'image/png' // 可以不指定,BOS會自動判斷 }, success:function(res){ var data = res.data console.log(res); }, fail:function(res){ console.log(res) } })
如此流程便可以輕鬆的將拍照和選擇的小視訊從微信小程式端直接上傳到百度雲了。
詳細的程式碼請下載附件檢視,附件中包含了拍照,錄小視訊,以及拍照上傳到百度雲的程式碼。