vue 前端将在线地址转成文件流File(图片,音频,视频)

      fetchMediaFileStream(mediaUrl, fileName, extension) {
        return new Promise((resolve, reject) => {
          const xhr = new XMLHttpRequest();

          xhr.onload = () => {
            if (xhr.status === 200) {
              console.log("打印=", xhr.response);
              const blob = xhr.response;

              let mimeType;
              switch (extension) {
                case 'mp3':
                case 'wav':
                case 'aac':
                  mimeType = 'audio/*';
                  break;
                case 'mp4':
                case 'avi':
                case 'mov':
                  mimeType = 'video/*';
                  break;
                case 'jpg':
                case 'jpeg':
                case 'png':
                case 'gif':
                  mimeType = 'image/*';
                  break;
                default:
                  reject(new Error('未知文件扩展名: ' + extension));
                  return;
              }

              const inferredFileName = fileName;
              const mediaFile = new File([blob], inferredFileName, {type: mimeType});
              resolve(mediaFile); // 成功时,解析并返回File对象
            } else {
              reject(new Error('请求失败,状态码:' + xhr.status)); // 如果HTTP状态不是200,则拒绝Promise
            }
          };

          xhr.onerror = () => {
            reject(new Error('网络请求失败,请检查网络连接')); // 处理网络错误
          };

          xhr.responseType = 'blob';
          xhr.open('GET', mediaUrl);
          xhr.send();
        });
      },

调用

      this.fetchMediaFileStream("http://192.168.4.3:9000/palmtengchong-000000/upload/20240606/63d11d0b4406bbb6343086ead6d283f2.mp3", '66', 'mp3')
        .then(file => {
          console.log('文件获取成功:', file);
          // 在这里处理成功的逻辑,比如将file存入数组或其他操作
        })
        .catch(error => {
          console.error('发生错误:', error.message);
          // 在这里处理错误,比如提示用户
        });

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值