obs.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import ObsClient from "esdk-obs-browserjs/src/obs"
  2. export const uploadToOBS = async (file, progressCallback, type, cancelCallback) => {
  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. const fileName = file.name || ""
  11. const upload_file_name = new Date().getTime() + "." + fileName.split(".")[fileName.split(".").length - 1]
  12. const date = new Date()
  13. const year = date.getFullYear()
  14. const month = date.getMonth() + 1
  15. const strDate = date.getDate()
  16. const uploadDay = `${year}${month}${strDate}`
  17. const videoKey = `userVideo/${uploadDay}/${upload_file_name}`
  18. const courseKey = `course/${uploadDay}/${upload_file_name}`
  19. const key = type === 1 ? courseKey : videoKey
  20. var callback = (transferredAmount, totalAmount, totalSeconds) => {
  21. const progress = Number.parseInt((transferredAmount * 100.0) / totalAmount)
  22. if (progressCallback) {
  23. progressCallback(progress)
  24. }
  25. }
  26. return new Promise((resolve, reject) => {
  27. let isCancelled = false
  28. if (cancelCallback) {
  29. cancelCallback({
  30. cancel: () => {
  31. console.log("Cancelling OBS upload")
  32. isCancelled = true
  33. reject(new Error("Upload cancelled by user"))
  34. },
  35. })
  36. }
  37. //四福堂专属配置
  38. // resolve({
  39. // "RequestId": "",
  40. // "urlPath": ""
  41. // })
  42. obsClient.putObject(
  43. {
  44. Bucket: process.env.VUE_APP_OBS_BUCKET,
  45. Key: key,
  46. Body: file,
  47. ProgressCallback: callback,
  48. },
  49. (err, result) => {
  50. if (isCancelled) {
  51. return // Don't process result if cancelled
  52. }
  53. if (err) {
  54. reject(err)
  55. console.error("Error-->" + err)
  56. } else {
  57. const a = {
  58. ...result,
  59. urlPath: key,
  60. }
  61. console.log("上传成功", a)
  62. resolve(a)
  63. }
  64. },
  65. )
  66. //注释到这里【四福堂】
  67. })
  68. } catch (error) {
  69. console.error("Error during upload:", error)
  70. throw error
  71. }
  72. }