cos.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import COS from 'cos-js-sdk-v5';
  2. import { Message } from 'element-ui';
  3. import { getTmpSecretKey } from '@/api/common';
  4. console.log('环境变量:', process.env);
  5. console.log('NODE_ENV:', process.env.NODE_ENV);
  6. console.log('VUE_APP_COS_BUCKET:', process.env.VUE_APP_COS_BUCKET);
  7. console.log('VUE_APP_COS_REGION:', process.env.VUE_APP_COS_REGION);
  8. const config = {
  9. Bucket: process.env.VUE_APP_COS_BUCKET,
  10. Region: process.env.VUE_APP_COS_REGION,
  11. };
  12. console.log('COS配置:', config);
  13. // 上传到腾讯云cos
  14. export const uploadObject = async (file,onProgress,type,callBackUp) => {
  15. try {
  16. console.log(type);
  17. const response = await getTmpSecretKey(); // 后台接口返回 密钥相关信息
  18. console.log("Key ",response);
  19. const data = response.data;
  20. const credentials = data && data.credentials;
  21. if (!data || !credentials) {
  22. console.error('未获取到参数');
  23. return;
  24. }
  25. // 初始化
  26. const cos = new COS({
  27. getAuthorization: (options, callback) => {
  28. callback({
  29. TmpSecretId: credentials.tmpSecretId,
  30. TmpSecretKey: credentials.tmpSecretKey,
  31. XCosSecurityToken: credentials.sessionToken,
  32. StartTime: data.startTime,
  33. ExpiredTime: data.expiredTime,
  34. });
  35. },
  36. });
  37. console.log("初始化成功")
  38. let fileName = file.name || ""
  39. const upload_file_name = new Date().getTime() + '.' + fileName.split(".")[fileName.split(".").length - 1];
  40. let date = new Date()
  41. let year = date.getFullYear()
  42. let month = date.getMonth() + 1
  43. let strDate = date.getDate()
  44. let uploadDay = `${year}${month}${strDate}`
  45. let videoKey = `/userVideo/${uploadDay}/${upload_file_name}`
  46. let courseKey = `/course/${uploadDay}/${upload_file_name}`
  47. let key = type ===1 ? courseKey : videoKey;
  48. console.log("开始上传")
  49. return new Promise((resolve, reject) => {
  50. console.log("uploadFile")
  51. cos.uploadFile(
  52. {
  53. Bucket: config.Bucket, /* 必须 */
  54. Region: config.Region, /* 存储桶所在地域,必须字段 */
  55. Key: key, // 文件名
  56. StorageClass: 'STANDARD', // 上传类型,可选
  57. Body: file, // 上传文件对象
  58. // onTaskReady: function (taskId) {
  59. // // 用于中断分片上传回调
  60. // console.log('Task ready:', taskId);
  61. // callBackUp && callBackUp({cos,taskId})
  62. // },
  63. onProgress: function (progressData) {
  64. console.log('COS上传进度=======>:', JSON.stringify(progressData));
  65. onProgress(progressData);
  66. },
  67. // onFileFinish: function (err, data, options) {
  68. // console.log(options.Key + '上传' + (err ? '失败' : '完成'));
  69. // },
  70. },
  71. (err, data) => {
  72. if (err) {
  73. reject(err);
  74. } else {
  75. // 将上传的key包含在返回的数据中
  76. const result = {
  77. ...data,
  78. urlPath: key
  79. };
  80. console.log('上传成功', result);
  81. resolve(result);
  82. }
  83. }
  84. );
  85. });
  86. } catch (error) {
  87. console.error('Error during upload:', error);
  88. throw error;
  89. }
  90. };