国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js純前端實現騰訊cos文件上傳功能的示例代碼

2024-05-06 15:39:30
字體:
來源:轉載
供稿:網友

前言

在前端開發中文件上傳是經常會遇到的,并且多數情況會使用第三方平臺來存儲文件,騰訊云cos是我們常用的。本篇文章就是帶我從前端的角度實現騰訊云COS存儲。本文參考了騰訊云COS開發文檔 JavaScript SDK

步驟

安裝騰訊云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: '獲取文件秘鑰接口出錯!'});  });}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 中山市| 永福县| 东莞市| 深泽县| 梁山县| 二连浩特市| 通辽市| 吉木乃县| 诸暨市| 正镶白旗| 南召县| 南充市| 镇坪县| 长海县| 乐都县| 黄陵县| 乌兰察布市| 海门市| 碌曲县| 黄冈市| 红安县| 昭觉县| 奉新县| 辉县市| 马边| 武夷山市| 衡水市| 福州市| 新野县| 嘉兴市| 岳普湖县| 桃江县| 安陆市| 临湘市| 禹城市| 晋州市| 苏尼特右旗| 宁晋县| 金川县| 鲁山县| 富顺县|