obs.js 2.1 KB

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