博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端下载远程文件
阅读量:6282 次
发布时间:2019-06-22

本文共 1382 字,大约阅读时间需要 4 分钟。

前端网页下载远程文件可以分为以下两种形式:

  • 打开新窗口下载
  • 在当前窗口直接下载

打开新窗口下载的方法:

  • window.open方法(打开一个弹窗): window.open('http://xxx/download?param=1&param2', '_blank', 'fullscreen=no,width=400,height=300')
  •   创建一个隐藏form表单提交方法(打开新的标签页):
    function downloadFile() {    let form = document.createElement('form') form.setAttribute('action', 'http://xxx/download?param=1&param2') form.setAttribute('method', 'get') form.setAttribute('target', '_blank') form.setAttribute('style', 'display:none') document.body.appendChild(form); form.submit(); document.body.removeChild(form) }

不打开新窗口的方法:

  • HTML5中A标签的download属性:

    指定下载文件名为:skillnull_logo 来下载 skillnull.jpg。但是兼容性不太好,caniuse给出的兼容性:

 

    • 服务端使用 Http Header : Content-Disposition 发送流文件
      Content-Disposition: inline
      Content-Disposition: attachment
      Content-Disposition: attachment; filename="filename.jpg"
    • 使用 Ajax + FileSaver
      假如你要下载的文件URL需要服务端返回后才能请求,这时候你就要在触发方法的时候先调用获取URL的接口,
      在promise返回后才能去使用 Ajax + FileSaver 去下载文件,如:
      this.$store.dispatch('getDownloadUrlFun', params).then((result) => {    let xhr = new XMLHttpRequest()    xhr.open('GET', result.url)    xhr.responseType = 'blob'    xhr.onload = function () {        saveAs(xhr.response, fileName + '.mp4')    }    xhr.send()}).catch((reason) => {    // do somthing to handler the err msg.})

      前提是要先安装引用 FileSaver:
      npm install file-saver --save
      import saveAs from 'file-saver'

转载于:https://www.cnblogs.com/Man-Dream-Necessary/p/9983872.html

你可能感兴趣的文章
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>
定义内部类 继承 AsyncTask 来实现异步网络请求
查看>>
VC中怎么读取.txt文件
查看>>
如何清理mac系统垃圾
查看>>
企业中最佳虚拟机软件应用程序—Parallels Deskto
查看>>
Nginx配置文件详细说明
查看>>
怎么用Navicat Premium图标编辑器创建表
查看>>
Spring配置文件(2)配置方式
查看>>
MariaDB/Mysql 批量插入 批量更新
查看>>
ItelliJ IDEA开发工具使用—创建一个web项目
查看>>
solr-4.10.4部署到tomcat6
查看>>
切片键(Shard Keys)
查看>>
淘宝API-类目
查看>>
virtualbox 笔记
查看>>
Git 常用命令
查看>>
驰骋工作流引擎三种项目集成开发模式
查看>>
SUSE11修改主机名方法
查看>>
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>