AuthAudio.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <template>
  2. <audio :src="src" controls="controls"></audio>
  3. </template>
  4. <script type="text/javascript">
  5. import Common from "../common/Common.js";
  6. export default {
  7. props: ['audioSrc', "token", "className"],
  8. data: function () {
  9. return {
  10. "src": "",
  11. }
  12. },
  13. methods: {
  14. loadAudio: function () {
  15. let _self = this;
  16. let request = new XMLHttpRequest();
  17. request.responseType = 'blob';
  18. request.open('get', _self.audioSrc, true);
  19. request.setRequestHeader('token', (_self.token == null) ? localStorage.getItem('#token') : _self.token);
  20. request.onload = function(e) {
  21. if(this.status == 200){
  22. _self.src = URL.createObjectURL(this.response);
  23. }
  24. };
  25. request.send();
  26. },
  27. /**
  28. * 语音加载完毕,调用本方法,释放通过URL.createObjectURL()创建的对象URL
  29. */
  30. onload: function(){
  31. let _self = this;
  32. URL.revokeObjectURL(_self.src);
  33. }
  34. },
  35. watch: {
  36. "audioSrc": function(newValue, oldValue){
  37. if(newValue != oldValue){
  38. this.loadAudio(newValue);
  39. }
  40. },
  41. },
  42. mounted: function(){
  43. this.loadAudio(this.audioSrc);
  44. }
  45. }
  46. </script>