cos.js 3.3 KB

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