前端url下载视频资源

摘要:
下载url视频有几种解决方案:1.标签下载。但是,由于浏览器机制,预览将首先打开。这对于图像和视频都是如此。如果您想通过a标记直接下载,可以设置Nginx配置//url是资源地址//newName是资源的原始名称//不能修改a标记的url标记的下载属性。此时,我们需要使用nginx的默认配置重命名来重置名称consttepmUrl=url+?renameto='+newName服务器{listen8086;服务器名称192.168.1.66;位置/{代理passhttp://127.0.0.1:8086 ; roothtml;indexindex.html索引。htm;}location/image/{roothtml/devGif;autoindexon;//主要配置是if($request_filename~*^.*?.$){add_headerContent Disposition“attachment”;}//End}}2.blob对象通过前端二进制文件流容器进行操作。

下载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()
    },

  

免责声明:文章转载自《前端url下载视频资源》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Jenkins技巧:如何启动、停止、重启、重载JenkinsQt环境搭建下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

第五篇 基于.net搭建热插拔式web框架(拦截器---请求管道)

  好了,前边我们把核心内容介绍完了,接下来要做的就是拦截用户的请求,并把请求转向沙箱内。   这里我们准备通过实现一个HttpModule类来完成请求的拦截与转发。新建一个HuberHttpModule类,并继承IHttpModule。下面我们暂时只处理Application_BeginRequest事件。   先获取request和response对象...

window.open()打开新窗口教程

使用 window 对象的 open() 方法可以打开一个新窗口。用法如下: window.open (URL, name, features, replace) 参数列表如下: URL:可选字符串,声明在新窗口中显示网页文档的 URL。如果省略,或者为空,则新窗口就不会显示任何文档。 name:可选字符串,声明新窗口的名称。这个名称可以用作标记 <...

IOS之同步请求、异步请求、GET请求、POST请求(转)

1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2、异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行 3、GET请求,将参数直接写在访问路径上。操作简单,不过容易被外界看到,安全性不高,地址最多255字节; 4、POST请...

爬取csdn的数据与解析存储(9)

安装软件: pip instal pymysq pip install peewee 创建数据模型orm from peewee import * db = MySQLDatabase("spider", host="127.0.0.1", port=3306, user="root", password="root") class BaseModel...

JavaScript History 对象

一、History对象 History 对象包含用户(在浏览器窗口中)访问过的 URL。 History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问。 注释:没有应用于 History 对象的公开标准,不过所有浏览器都支持该对象。 1. History 对象属性 length: 地址栏中 url的数量 st...

python-上传文件的几种方式

from requests_toolbelt import MultipartEncoder import requests # from_data上传文件,注意参数名propertyMessageXml data = MultipartEncoder(fields={'propertyMessageXml': ('filename', open('D:...