中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js如何實現騰訊cos文件上傳功能

發布時間:2021-07-09 14:34:59 來源:億速云 閱讀:651 作者:小新 欄目:web開發

這篇文章主要介紹了js如何實現騰訊cos文件上傳功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

步驟

安裝騰訊云COS上傳所需的sdk

下載cos-js-sdk-v5.min.js并引入index.html

監聽文件上傳組件

//監聽文件變化
document.getElementById('file').onchange = function() {
          let file = this.files[0];
          let type = file.type
          //初始化文件上傳
          initUploadObj(that, file.name, file, 'image', function(res) {
            if (res.success) {
              that.$message.success(res.msg)
            } else {
              that.$message.warning(res.msg)
            }
          })
        }

初始化文件上傳對象(封裝起來其他地方上傳也可以用)

/**
 * 初始化上傳文件對象
 * @param {object} Vue
 * @param {string} fileName 文件名
 * @param {object} file 上傳的文件流及文件類型 名稱相關信息
 * @param {Array} 允許上傳的文件類型
 * @param {function} uploadStatusCallbalck
 * @return {function} 返回回調函數
 */
export const initUploadObj = function (Vue,fileName,file,type,uploadStatusCallbalck) {
 let fileInfo = {
  file_name: fileName,
  media_type: 2,
  media_sub_type: 0,
  size_of_bytes: 122,
  file_expired_type: 'permanent',
 };
 //前端做文件類型限制
 if(type == 'image'){
  type = ['.jpg','.gif','.jpeg','.bmp','.png']
 }
 if(type == 'excel'){
  type = ['.xlsx']
 }
 let fileType =file.name ? file.name.substring(file.name.lastIndexOf(".")).toLowerCase() : ''; 
 if (!!type && type.indexOf (fileType) < 0) {
  uploadStatusCallbalck ({success: false, msg: '請上傳正確的'+type+'文件格式!'});
  return;
 }
 var cos = new COS ({
  getAuthorization: function (options, callback) {
   let singleInfo = Vue.$store.state.fileToken;
   callback ({
    TmpSecretId: singleInfo.tmpSecretId,
    TmpSecretKey: singleInfo.tmpSecretKey,
    XCosSecurityToken: singleInfo.sessionToken,
    ExpiredTime: singleInfo.expiredTime,
   });
  },
 });
 fileInfo.file_name = file.name;
 //獲取文件上傳密鑰
 getFileToken (Vue, fileInfo, cos, file, uploadStatusCallbalck);
};

獲取文件上傳密鑰(最好存在后端通過ajax請求獲取,安全性較高)

function getFileToken (Vue, fileInfo, cos, file, uploadStatusCallbalck) {
 let url = process.env.VUE_APP_URL + '/file/secretid';
 if (!file) return;
 // 異步獲取臨時密鑰
 axios
  .get (url)
  .then (function (res) {
   if (res.data.code == 100000) {
    //獲取的臨時秘鑰存儲在vuex中
    Vue.$store.commit ('UPDATE_FILE_INFO', res.data.data);
    uploadFile (cos, file, res.data.data, uploadStatusCallbalck);
   } else {
    uploadStatusCallbalck ({success: false, msg: '獲取文件秘鑰失敗!'});
   }
  })
  .catch (function (err) {
   uploadStatusCallbalck ({success: false, msg: '獲取文件秘鑰接口出錯!'});
  });
}

上傳文件(調用相關api putObject來上傳文件)

/**
 * @method uploadFile
 * @param {object} cos
 */
function uploadFile (cos, file, signInfo, callback) {
 cos.putObject (
  {
   Bucket: process.env.VUE_APP_BUCKET,
   Region: 'ap-shanghai',
   Key: signInfo.fileId,
   Body: file,
   onHashProgress: function (progressData) {
    console.log ('校驗中', JSON.stringify (progressData));
   },
   onProgress: function (progressData) {
    console.log ('上傳中', JSON.stringify (progressData));
   },
  },
  function (err, data) {
   if (err) {
    console.log (err);
    callback ({success: false, msg: '文件上傳失敗!'});
    return;
   }
   callback ({success: true, msg: '上傳成功!', data: data, signInfo: signInfo});
  }
 );
}

總結

騰訊云cos文件上傳實際是分為三步,本地表單處理文件流 => 根據文檔獲取相關參數 => 上傳文件。

  • 第一步主要前端上傳功能的處理,可以用來限制文件上傳大小(不太準確,根據文件的字節流長度),文件上傳類型(根據文件后綴名)。

  • 第二步的參數多數都是可以在cos賬號后臺拿到的。這塊參數最好還是存儲在后臺比較安全。

  • 第三步上傳我們只需要調用sdk相關接口傳入參數即可。只要熟悉了這三個步驟,上傳的大部分問題都能解決掉。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“js如何實現騰訊cos文件上傳功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

罗山县| 哈尔滨市| 鄄城县| 清原| 黄龙县| 甘孜县| 安陆市| 永顺县| 黄骅市| 岳池县| 潜山县| 黄平县| 沙河市| 曲阜市| 南通市| 西贡区| 金湖县| 平邑县| 岑溪市| 连平县| 安顺市| 肇庆市| 蚌埠市| 芜湖县| 凤城市| 辛集市| 吴桥县| 大竹县| 夏邑县| 枣强县| 灵台县| 崇左市| 宜兴市| 视频| 松滋市| 延寿县| 玉屏| 宁都县| 化隆| 银川市| 安达市|