hsy.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import TTUploader from 'tt-uploader'
  2. import { HsyAssumeRoleService } from '@/api/course/userVideo'
  3. const spaceName = process.env.VUE_APP_HSY_SPACE
  4. export const uploadToHSY = async (file, onProgress, type, callBackUp) => {
  5. try {
  6. const res = await HsyAssumeRoleService()
  7. //console.log('火山云 STS 凭证:', res)
  8. const credentials = res.data.result.credentials
  9. //console.log('火山云 credentials 凭证:', credentials)
  10. if (!credentials) {
  11. throw new Error('未获取到火山云 STS 凭证')
  12. }
  13. const uploader = new TTUploader({
  14. appId: '917052',
  15. userId: '68185444',
  16. videoConfig: {
  17. spaceName: spaceName,
  18. }
  19. })
  20. const date = new Date();
  21. const yyyy = date.getFullYear();
  22. const MM = String(date.getMonth() + 1).padStart(2, '0');
  23. const dd = String(date.getDate()).padStart(2, '0');
  24. const datePath = `${yyyy}${MM}${dd}`;
  25. const fileName = `${Date.now()}.mp4`;
  26. const remoteFileName = `course/${datePath}/${fileName}`;
  27. const fileKey = uploader.addFile({
  28. file,
  29. type: 'video',
  30. fileName:remoteFileName,
  31. stsToken: {
  32. CurrentTime: credentials.currentTime,
  33. ExpiredTime: credentials.expiredTime,
  34. SessionToken: credentials.sessionToken,
  35. AccessKeyID: credentials.accessKeyId,
  36. SecretAccessKey: credentials.secretAccessKey,
  37. },
  38. })
  39. return new Promise((resolve, reject) => {
  40. // 上传进度
  41. uploader.on('progress', (info) => {
  42. onProgress && onProgress({
  43. percent: info.percent,
  44. })
  45. })
  46. // 上传完成
  47. uploader.on('complete', (info) => {
  48. resolve({
  49. ...info.uploadResult,
  50. fileKey,
  51. })
  52. })
  53. // 上传失败
  54. uploader.on('error', (info) => {
  55. reject(info)
  56. })
  57. // 取消上传支持
  58. if (callBackUp) {
  59. callBackUp({
  60. uploader,
  61. fileKey,
  62. cancel: () => {
  63. try {
  64. uploader.removeFile(fileKey)
  65. reject(new Error('Upload cancelled by user'))
  66. } catch (e) {
  67. reject(e)
  68. }
  69. }
  70. })
  71. }
  72. uploader.start(fileKey)
  73. })
  74. } catch (error) {
  75. console.error('火山云上传失败:', error)
  76. throw error
  77. }
  78. }