前端url下载视频资源


下载url视频有以下几种方案:

1.a标签download,但是这种因为浏览器机制会先打开预览,图片与视频都是这样。在预览页面右键下载。如果想通过a标签直接下载,可以通过设置Nginx配置。

  

// url为资源地址
// newName为资源的原名称
// a标签的url a标签的download属性并不能修改名称,这时候我们就需要用到nginx的一个默认配置renameto达到重置名称的效果
const tepmUrl = url + '?renameto=' + newName

  

server {
        listen 8086;
        server_name 192.168.1.66;
        location / {
            proxy_pass http://127.0.0.1:8086;
            root html;
            index index.html index.htm;
        }
        location /image/ {
            root html/devGif;
            autoindex on;
            // 主要配置
             if ($request_filename ~* ^.*?.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jpg|png)$){
               add_header Content-Disposition 'attachment';
            }
        //end
        }
}

  

2.通过前端二进制文件流容器,blob对象进行操作。通过xmlHttpRequest进行访问视频url地址,得到视频数据后

  转为二进制文件流保存在blob对象, 再通过createObjectURL创建一个包含二进制文件流额url,再通过创建

  a标签设置下载地址,主动调用下载操作,进行视频二进制文件流下载

示例代码如下:

  function  downFile() {
      let url = 'https://xxxx.com"   
      let name = '视频资源'
      let xhr = new XMLHttpRequest()
      xhr.open('GET', url, true)
      xhr.responseType = 'blob' // 返回类型blob
      // 监听进度
      xhr.onprogress = function (e) {
        if (e.lengthComputable) {
          // 文件总体积
          console.log(e.total)
          // 已下载体积
          console.log(e.loaded)
        }
      }
      xhr.onload = function () {
        if (xhr.readyState === 4 && xhr.status === 200) {
          let blob = this.response
          // 转换一个blob链接
          let u = window.URL.createObjectURL(new Blob([blob]))
          let a = document.createElement('a')
          a.download = name
          a.href = u
          a.style.display = 'none'
          document.body.appendChild(a)
          a.click()
          a.remove()
          // 释放
          window.URL.revokeObjectURL(u)
        }
      }
      xhr.onerror = function () {
        console.log('失败')
      }
      xhr.send()
    },

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM