微信小程序-騰訊云Cos上傳文件

????????之前有做過iOS的Cos上傳文件,小程序的是第一次做.在網(wǎng)上找了好多資料素材.JS的有很多可以參考,但是關(guān)于小程序這邊比較少.正好我也做完了,就拿出來分享一下.

? ? ? ? 騰訊自己在github上有關(guān)于小程序Cos的使用說明.

????????附上鏈接:https://github.com/tencentyun/cos-wx-sdk-v5.

? ? ? ? 具體的實現(xiàn)方法很簡單,首先要去上面鏈接里下載項目,從demo/lib中找到cos-wx-sdk-v5.js,拖入自己的項目中.如果之前沒有用過cos服務(wù)的,要去騰訊云的官方注冊,創(chuàng)建并且獲取一些值.這些上面鏈接里寫的很清楚,按步驟做就好了.

? ? ? ? 前期準(zhǔn)備都做好了之后,就是寫代碼了.下面是github上騰訊官方的代碼:


小程序cos上傳

下面的方法適合調(diào)試使用(將SecretId和SecretKey寫本地),大家可以參考,代碼如下:

// 騰訊云上傳操作

? // 開始上傳

? startUploadFile: function (mediaType, filePath, callback) {

? ? wx.showLoading({

? ? ? title: '上傳中...',

? ? })

? ? var Bucket = '你自己創(chuàng)建的Bucket';

? ? var Region = '你自己的Region';

? ? console.log(Bucket, Region);

? ? var that = this;

? ? var cos = new COS({

? ? ? getAuthorization: function (options, callback) {

? ? ? ? // 調(diào)試方式

? ? ? ? var authorization = COS.getAuthorization({

? ? ? ? ? SecretId: '你自己的SecretId',

? ? ? ? ? SecretKey: '你自己的SecretKey',

? ? ? ? ? ? Method: options.Method,

? ? ? ? ? ? Key: options.Key

? ? ? ? ? });

? ? ? ? ? callback(authorization);

? ? ? }

? ? });

? ? // 生成上傳文件名

? ? var Key = filePath.substr(filePath.lastIndexOf('/') + 1); // 這里指定上傳的文件名? ? ? ?

? ? var dateObj = new Date();? ? ? ?

? ? var timestamp = dateObj.getTime();? ? ? ?

? ? var nowDate = dateObj.toLocaleDateString();? ? ? ?

? ? var formatDate = nowDate.replace(/\//g,"-");? // 格式斜杠日期? ? ? ?

? ? console.log(formatDate);? ? ? ?

? ? var filename = formatDate + '/' + timestamp+Key;?

? ? // 上傳方法

? ? cos.postObject({

? ? ? Bucket: Bucket,

? ? ? Region: Region,

? ? ? Key: filename,

? ? ? FilePath: filePath,

? ? ? onProgress: function (info) {

? ? ? }

? ? }, function (err, data) {

? ? ? wx.hideLoading();

? ? ? console.log('err'+err);

? ? ? console.log(JSON.stringify(data));

? ? ? if (err) {

? ? ? ? callback(false); // 上傳失敗的callback

? ? ? }

? ? ? if (data) {

? ? ? ? callback(true, mediaData); // 上傳成功的callback

? ? ? }

? ? });

? },

? 真正項目中的上傳方法,區(qū)別在authorization的創(chuàng)建方法(使用臨時簽名).代碼如下:

? ?var getAuthorization = function (options, callback) {

? ?// 后端通過獲取臨時密鑰給到前端,前端計算簽名

? ? ? that.fetchCosTempKeyInfo((isSuccess,data)=>{

? ? ? ? if (isSuccess) {

? ? ? ? ? if (data) {

? ? ? ? ? ? callback({

? ? ? ? ? ? ? TmpSecretId: data.tmpSecretId,

? ? ? ? ? ? ? TmpSecretKey: data.tmpSecretKey,

? ? ? ? ? ? ? XCosSecurityToken: data.sessionToken,

? ? ? ? ? ? ? ExpiredTime: data.expiredTime,

? ? ? ? ? ? });

? ? ? ? ? } else {

? ? ? ? ? ? wx.hideLoading();

? ? ? ? ? ? app.showToast('獲取上傳信息失敗!');

? ? ? ? ? ? return;

? ? ? ? ? }

? ? ? ? } else {

? ? ? ? ? wx.hideLoading();

? ? ? ? ? app.showToast('獲取上傳信息失敗!');

? ? ? ? ? return;

? ? ? ? }

? ? ? })

? ? }

? ? var cos = new COS({

? ? ? getAuthorization: getAuthorization,

? ? });

// 獲取臨時簽名信息

? fetchCosTempKeyInfo:function(callback) {

? ? ?var that = this;

? ? //發(fā)起網(wǎng)絡(luò)請求獲取臨時簽名信息

????//如果獲取成功

????callback(true,result.data);

????// 如果失敗

????callback(false, error);

? },

? ? 謝謝大家!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 做學(xué)問如作戰(zhàn),須攻堅挫銳,占住要塞。 一篇讀下來,真感覺自己被打通了任督二脈,關(guān)于讀書,自己真的是初學(xué)水平,完全按...
    飛鳥逐溪閱讀 657評論 0 2
  • 前幾天搗鼓了一下分割線,今天來看看RecyclerView的交互吧,RecyclerView的交互離不開ItemT...
    Archer_Coder閱讀 562評論 0 1
  • 生命陪伴心語系統(tǒng): (當(dāng)下)此刻就是支持我成長的最大機會 (過程)我看見了我的情緒和想法,這不過是情緒和想法而已,...
    陽光中的晨薇閱讀 190評論 0 0
  • 有邏輯是一項很重要的技能 有一天正趕上保研生的面試,在面試結(jié)束之后,跟老師做實驗的時候,老師突然問我,對保研生有什...
    有聊星人_幾人歸閱讀 178評論 0 0

友情鏈接更多精彩內(nèi)容