uopladFile.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import PlvVideoUpload from '@polyv/vod-upload-js-sdk'
  2. import api from '@/api/api'
  3. import { Message } from 'element-ui';
  4. // import md5 from 'js-md5'
  5. // 此方法主要用于加密一些保利威的专用参数 如果是后端传递的 可以打掉
  6. function getToken(videoUpload, array) {
  7. const ptime = array.ptime
  8. const userid = 'd5f6d309fe'
  9. // const secretkey = 'xpPrYdcbA1'
  10. // const writeToken = '8f14a371-9d02-4ec1-922d-54d7b4f79dca'
  11. const hash = array.hash
  12. const sign = array.sign
  13. // const hash = md5(ptime + writeToken)
  14. // const sign = md5(secretkey + ptime)
  15. videoUpload.updateUserData({ ptime, hash, sign, userid })
  16. videoUpload.startAll()
  17. }
  18. // 由于保利威的一些机制 你需要三分钟就重新加密你的 ptime 如果你打掉了就不行
  19. function autoUpdateUserData(timer, videoUpload, array) {
  20. getToken(videoUpload, array)
  21. if (timer) {
  22. clearTimeout(timer)
  23. timer = null
  24. }
  25. timer = setTimeout(() => {
  26. autoUpdateUserData(timer, videoUpload, array)
  27. }, 3 * 50 * 1000)
  28. }
  29. /**
  30. * @param: files -> 一个文件的数组 注意 是【数组】
  31. * @param: fileSetting -> 主要是用来传递给保利威的属性
  32. * @param: callback -> 上传进度,成功,失败 的回调 tips:回调太多 我就拿了这三个比较有用的
  33. */
  34. export function uploadFile(files, fileSetting, callback) {
  35. const videoUpload = new PlvVideoUpload({
  36. region: 'line1', // (可选)上传线路, 默认line1
  37. events: {
  38. Error: (err) => { // 错误事件回调
  39. console.log(err);
  40. },
  41. UploadComplete: () => { } // 全部上传任务完成回调
  42. }
  43. })
  44. new Promise((resolve, reject) => {
  45. api.inquirepolyvvideogetPolyvUpload().then(res => {
  46. resolve(res)
  47. })
  48. }).then(res => {
  49. autoUpdateUserData(null, videoUpload, res.data)
  50. const uploader = videoUpload.addFile(files, {
  51. FileStarted: function (uploadInfo) { // 文件开始上传回调
  52. console.log("文件上传开始: " + uploadInfo.fileData.title);
  53. },
  54. FileProgress: function (uploadInfo) { // 文件上传过程返回上传进度信息回调
  55. console.log("文件上传中: " + (uploadInfo.progress * 100).toFixed(2) + '%');
  56. },
  57. FileStopped: function (uploadInfo) { // 文件暂停上传回调
  58. console.log("文件上传停止: " + uploadInfo.fileData.title);
  59. },
  60. FileSucceed: ({ fileData }) => {// 上传视频成功的回调
  61. Message.success({ message: "视频已上传成功,待审核中,等待审核通过后才可使用。如未自动填充时长,请手动填写!", duration: 6000, showClose: true })
  62. callback(fileData)
  63. },
  64. FileFailed: ({ errData }) => {// 上传视频失败的回调
  65. Message.error({ message: "文件上传失败" })
  66. callback("文件上传失败: " + errData)
  67. }
  68. }, fileSetting)
  69. })
  70. /**
  71. * 这里的调用是上传全部
  72. * 本来我也是一个一个调的
  73. * 但是考虑到对于有多选上传不是很友好
  74. * 就无论你传递几个视频 这里都统一一起上传
  75. * */
  76. }