obs.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import ObsClient from "esdk-obs-browserjs/src/obs";
  2. export const uploadToOBS = async(file,progressCallback,type) => {
  3. try {
  4. const obsClient = new ObsClient({
  5. access_key_id: process.env.VUE_APP_OBS_ACCESS_KEY_ID,
  6. secret_access_key: process.env.VUE_APP_OBS_SECRET_ACCESS_KEY,
  7. server: process.env.VUE_APP_OBS_SERVER,
  8. timeout: 1200,
  9. });
  10. let fileName = file.name || ""
  11. const upload_file_name = new Date().getTime() + '.' + fileName.split(".")[fileName.split(".").length - 1];
  12. let date = new Date()
  13. let year = date.getFullYear()
  14. let month = date.getMonth() + 1
  15. let strDate = date.getDate()
  16. let uploadDay = `${year}${month}${strDate}`
  17. let videoKey = `userVideo/${uploadDay}/${upload_file_name}`
  18. let courseKey = `course/${uploadDay}/${upload_file_name}`
  19. let key = type ===1 ? courseKey : videoKey;
  20. var callback = function (transferredAmount, totalAmount, totalSeconds) {
  21. // 获取上传进度百分比
  22. const progress = parseInt(transferredAmount * 100.0 / totalAmount);
  23. console.log("OBS上传进度=========>",progress);
  24. if (progressCallback) {
  25. progressCallback(progress);
  26. }
  27. };
  28. return new Promise((resolve, reject) => {
  29. //上传对象
  30. obsClient.putObject({
  31. Bucket: process.env.VUE_APP_OBS_BUCKET,//桶名称
  32. Key: key,//文件名
  33. Body: file,
  34. ProgressCallback: callback,//进度回调
  35. }, (err, result) => {
  36. if(err){
  37. reject(err);
  38. console.error('Error-->' + err);
  39. }else{
  40. // 将上传的key包含在返回的数据中
  41. const a = {
  42. ...result,
  43. urlPath: key
  44. };
  45. console.log('上传成功', a);
  46. resolve(a);
  47. }
  48. });
  49. });
  50. } catch (error) {
  51. console.error('Error during upload:', error);
  52. throw error;
  53. }
  54. }