cos_utils.js工具函数
| /* |
| npm i cos-js-sdk-v5 |
| |
| //文件对象上传: |
| utils.cos_utils.putObject( |
| { |
| bucket:'spoongsb-1253997188', |
| region:'ap-chengdu' |
| },'lecturer-files',fileObj,(progerss)=>{ |
| console.log(progerss) |
| },(data,err)=>{ |
| console.error(err) |
| console.log(data) |
| }) |
| |
| //大文件对象上传: |
| utils.cos_utils.sliceUploadFile( |
| utils.cos_utils.getConfig() |
| ,'lecturer-files',fileObj,(progress)=>{ |
| console.log(JSON.stringify(progress)) |
| },(data,err)=>{ |
| console.error(err) |
| console.log(data) |
| }) |
| */ |
| import utils from '.'; |
| import fns from 'date-fns'; |
| const COS = require('cos-js-sdk-v5'); |
| const gBucket = 'spoongsb-1253997188' |
| const gRegion = 'ap-chengdu' |
| const gSecretId = '' |
| const gSecretKey = '' |
| |
| const cos_utils = { |
| //获取基本配置 |
| getConfig () { |
| console.log('config cos ... ') |
| return { |
| bucket: gBucket, |
| region: gRegion |
| } |
| }, |
| auth () { |
| console.log('auth cos ... ') |
| return new COS({ |
| SecretId: gSecretId, |
| SecretKey: gSecretKey |
| }); |
| }, |
| /* |
| COS上传对象 |
| //基础配置 |
| let config = { |
| bucket:'spoongsb-1253997188', |
| region:'ap-chengdu' |
| } |
| //资源前缀 |
| let prefix = 'lecturer-files' |
| //待上传对象 |
| let file = new file() |
| //上传进度 |
| let progress = {"loaded":0,"total":49032,"speed":null,"percent":0} |
| let progress = {"loaded":49032,"total":49032,"speed":75666.67,"percent":1} |
| //回传结果 |
| callback |
| data: |
| { |
| Location: "spoongsb-1253997188.cos.ap-chengdu.myqcloud.com/lecturer-files/2019-09-24/1569302205144_icon.png", |
| statusCode: 200, |
| headers: |
| { |
| content-length: "0" |
| } |
| } |
| err: |
| {error: "missing param Bucket"} |
| */ |
| putObject (config, prefix, file, progress, callback) { |
| let cos = utils.cos_utils.auth() |
| let path = prefix + '/' + fns.format(new Date(), 'YYYY-MM-DD') + '/' + new Date().getTime() + '_' + file.name; |
| console.log('上传路径 :', path) |
| cos.putObject({ |
| Bucket: config.bucket, |
| Region: config.region, |
| Key: path, |
| Body: file, |
| onProgress: (progressData) => { |
| progress(JSON.stringify(progressData)) |
| } |
| }, (err, data) => { |
| callback(data, err) |
| }); |
| }, |
| /* |
| COS实现文件的分块上传,适用于大文件上传 |
| //基础配置 |
| let config = { |
| bucket:'spoongsb-1253997188', |
| region:'ap-chengdu' |
| } |
| //资源前缀 |
| let prefix = 'lecturer-files' |
| //待上传对象 |
| let file = new file() |
| //上传进度 |
| let progress = {"loaded":0,"total":49032,"speed":null,"percent":0} |
| let progress = {"loaded":49032,"total":49032,"speed":75666.67,"percent":1} |
| //回传结果 |
| callback |
| data: |
| { |
| Location: "spoongsb-1253997188.cos.ap-chengdu.myqcloud.com/lecturer-files/2019-09-24/1569302205144_icon.png", |
| statusCode: 200, |
| headers: |
| { |
| content-length: "0" |
| } |
| } |
| err: |
| {error: "missing param Bucket"} |
| */ |
| sliceUploadFile (config, prefix, file, progress, callback) { |
| let cos = utils.cos_utils.auth() |
| let path = prefix + '/' + fns.format(new Date(), 'YYYY-MM-DD') + '/' + new Date().getTime() + '_' + file.name; |
| console.log('上传路径 :', path) |
| cos.sliceUploadFile({ |
| Bucket: config.bucket, |
| Region: config.region, |
| Key: path, |
| Body: file, |
| onTaskReady: (taskId) => { |
| //可回传任务号非必须 |
| console.log(taskId); |
| }, |
| onHashProgress: (progressData) => { |
| console.log(JSON.stringify(progressData)); |
| }, |
| onProgress: (progressData) => { |
| //回传进度 |
| progress(progressData); |
| } |
| }, (err, data) => { |
| //回传结果 |
| callback(data, err) |
| }); |
| } |
| } |
| export default cos_utils |
调整ele ui upload 调用
| |
| |
| uploadSectionFile(param){ |
| utils.cos_utils.sliceUploadFile( |
| utils.cos_utils.getConfig() |
| ,'lecturer-files',param.file,(progress)=>{ |
| param.onProgress({percent:progress.percent*100}) |
| },(data,err)=>{ |
| if(data!=undefined){ |
| if(data.statusCode == 200){ |
| param.onSuccess() |
| }else{ |
| param.onError() |
| console.log(data.statusCode) |
| } |
| }else{ |
| param.onError() |
| console.error(err) |
| } |
| }) |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)