实现点击下载文件的几种方法


标签:文件下载,技巧

在实现点击下载文件有多种方法:

后端设置header信息

通过后端告诉浏览器header信息实现下载:

header(‘Content-type: image/jpeg‘); header("Content-Disposition: attachment; filename=‘download.jpg‘"); 

局限:

  • 需要后端配合.

直接跳转到目标文件的地址

使用window.open()或者location.href或者直接使用<a>标签将页面跳转到文件地址,如果文件时浏览器无法打开的文件类型,浏览器会自动下载该文件.

局限:

  • 会自动打开一个新页面,体验不好.
  • 图片文件和文本文件这些浏览器能够打开的文件无法下载.

使用表单提交的方式下载文件

实现的思路是: 在点击之后,在页面中通过js代码新建一个form表单元素,然后通过提交表单的方式请求文件,如果文件类型是时浏览器无法打开的文件,那么就会对文件进行下载.

function download2() {    var $form = $(‘<form method="GET"></form>‘);    $form.attr(‘action‘, ‘/download/papers/1‘);    $form.appendTo($(‘body‘));    $form.submit();}

优点:

  • 不需要开启新的页面即可下载文件.

局限:

  • 无法下载浏览器能够打开的文件.

使用a标签的download属性

通过在a标签中添加download属性,即可实现点击下载任何文件,体验非常的好.

局限:

  • 兼容性差,在大部分浏览中不支持跨域资源的download属性下载.

使用file-saver插件实现文件下载

file-saver内部操作:

  • 支持download的浏览器,直接使用a标签实现下载.
  • 不支持download的浏览器:
  • 特殊浏览器支持FileReader的,使用其构建URL,使用window.open或location.href来实现.
  • 除了特殊的浏览器,使用URL.createObjectURL来构建对象URL,使用window.open或location.href来实现.

使用:

handleDownload(url, name) {    this.getBlob(url).then(blob => {        saveAs(blob, name);    })    return false;};getBlob(url) {    return new Promise(resolve => {        const xhr = new XMLHttpRequest();        xhr.open(‘GET‘, url, true);        xhr.responseType = ‘blob‘;        xhr.onload = () => {            if (xhr.status === 200) {            resolve(xhr.response);            }        };        xhr.send();    })};

参考文档

张鑫旭博客关于a标签download属性的介绍
file-saver插件地址

作者简介:李成文,芦苇科技web前端开发工程师,擅长网站建设、微信公众号开发、微信小程序开发、小游戏制作、企业微信制作、H5建设,专注于前端框架、交互设计、图像绘制、数据分析等研究。

个人博客:LCW blog

欢迎和我们一起并肩作战: [email protected]
访问 www.talkmoney.cn 了解更多

提供深圳微信公众号制作,广东钉钉开发,专业的企业微信外包,高性价比的微信小程序建设,靠谱的小游戏制作,高质量的H5开发

原文地址:https://www.cnblogs.com/luwei-web/p/10167713.html

时间: 2024-08-28 10:23:06

实现点击下载文件的几种方法的相关文章

PHP下载文件的两种方法

PHP下载文件的两种方法与代码分享 转自:http://www.cnblogs.com/cfinder010/p/3197195.html PHP实现下载文件的两种方法.分享下,有用到的朋友看看哦. 方法一: <?php /** * 下载文件 * header函数 **/header('Content-Description: File Transfer');header('Content-Type: application/octet-stream');header('Content-Disp

python下载文件的三种方法

Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法requests. 下面来看看三种方法是如何来下载zip文件的:方法一: import urllib import urllib2 import requests print "downloading with urllib" url = 'http://***/test/demo.zip

从网络上下载文件的两种方法

两种方法使用的Com函数都来源于UrlMon,记得先引用. 一.URLDownloadToFile 直接下载文件到磁盘,URLDownloadToFile声明如下: function URLDownloadToFile(    Caller: IUnknown;     URL: PWideChar;           { 下载的路径 }    FileName: PWideChar;   { 保存到的路径 }    Reserved: DWORD;    StatusCB: IBindSta

Linux远程下载文件的两种方法之 ftp命令和scp命令

ftp命令: 服务器有安装ftp Server,另外一台linux可以使用ftp的client程序来进行文件的拷贝读取和下载. 1. 连接ftp服务器  格式:ftp [hostname| ip-address] a)在linux命令行下输入:ftp 192.168.26.66 b)服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可. 2. 下载文件 下载文件通常用get和mget这两条命令. a) get  格式:get [remote-file] [local-file] 将

linux远程下载文件 的两种方法之 ftp命令和scp命令

ftp命令: 服务器有安装ftp Server,另外一台linux可以使用ftp的client程序来进行文件的拷贝读取和下载. 1. 连接ftp服务器  格式:ftp [hostname| ip-address] a)在linux命令行下输入:ftp 192.168.26.66 b)服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可. 2. 下载文件 下载文件通常用get和mget这两条命令. a) get  格式:get [remote-file] [local-file] 将

asp.net下载文件的几种方法

最近做东西遇到了下载相关的问题.在这里总结一下自己处理的方法. 1.以字节流的形式向页面输出数据以下载Excel为例子. string path=Server.MapPath("文件路径");//这里的文件路径是相对路径 FileStream fs = new FileStream(path, FileMode.Open);//将文件读入到流,当然这里也可以是存在内存中的Excel 并不一定是存在服务器上的文件 byte[] bytes = new byte[(int)fs .Leng

PHP下载文件的几种方案

PHP下载远程文件的3种方法以及性能考虑 2014-02-21      0个评论       收藏    我要投稿 今天在做导出Excel的时候,总是要测试导出的Excel文件,频繁的下载和打开,很麻烦 就想着写段代码一气呵成  服务端导出Excel==>下载Excel文件到本地==>并打开的操作. 这里摘出PHP下载远端文件的方案,以备忘.其中第3种方法考虑到文件过大时的性能问题. 3种方案: -rw-rw-r-- 1 liuyuan liuyuan 470 Feb 20 18:12 te

Asp.Net 下载文件的几种方式

asp.net下载文件几种方式 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite 下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题. 代码如下: */ Response.ContentType = "application/x-zip-compressed";

GitHub常用上传文件的两种方法 附带常见的问题及Git安装教程

从早上下课到现在一直在琢磨如何给Gethub下载本地文件,中午饭都没吃.还好是解决了,感觉挺有成就感的.O(∩_∩)O哈哈~ 好哒 闲话不说,说重点. 一.git的安装 百度云:http://pan.baidu.com/s/1mhFy8Ik 打开后 点next 2.继续点next 3.继续点next 4.选第一行是默认windows使用 选第二行是Windows和Linux都可以 点next 5.可以不用管,选择默认就可以了 点next 6.安装成功后弹出 7 这时候你找到你的git文件夹,点击