js实现的文件下载

/**
* Javascript 多文件下载
* @author Barret Lee
* @email barret.china@gmail.com
*/
var Downer = (function(files) {
var h5Down = !/Trident|MSIE/.test(navigator.userAgent);
// try{
// h5Down = document.createElement("a").hasOwnProperty("download");
// } catch(e){
// h5Down = document.createElement("a").download;
// }

/**
* 在支持 download 属性的情况下使用该方法进行单个文件下载
* 目前 FF 还不支持 download 属性,所以 FF 必须另觅他法!
* @param {String} fileName
* @param {String|FileObject} contentOrPath
* @return {Null}
*/
function downloadFile(fileName, contentOrPath) {
var aLink = document.createElement("a"),
evt = document.createEvent("HTMLEvents"),
isData = contentOrPath.slice(0, 5) === "data:",
isPath = contentOrPath.lastIndexOf(".") > -1;

// 初始化点击事件
// 注:initEvent 不加后两个参数在FF下会报错
evt.initEvent("click", false, false);

// 添加文件下载名
aLink.download = fileName;

// 如果是 path 或者 dataURL 直接赋值
// 如果是 file 或者其他内容,使用 Blob 转换
aLink.href = isPath || isData ? contentOrPath : URL.createObjectURL(new Blob([contentOrPath]));

aLink.dispatchEvent(evt);
}

/**
* [IEdownloadFile description]
* @param {String} fileName
* @param {String|FileObject} contentOrPath
*/
function IEdownloadFile(fileName, contentOrPath, bool) {
var isImg = contentOrPath.slice(0, 10) === "data:image",
ifr = document.createElement('iframe');

ifr.style.display = 'none';
ifr.src = contentOrPath;

document.body.appendChild(ifr);

// dataURL 的情况
isImg && ifr.contentWindow.document.write("<img src='" +
contentOrPath + "' />");

// 保存页面 -> 保存文件
// alert(ifr.contentWindow.document.body.innerHTML)
if (bool) {
ifr.contentWindow.document.execCommand('SaveAs', false, fileName);
document.body.removeChild(ifr);
} else {
setTimeout(function() {
ifr.contentWindow.document.execCommand('SaveAs', false, fileName);
document.body.removeChild(ifr);
}, 0);
}
}

/**
* [parseURL description]
* @param {String} str [description]
* @return {String} [description]
*/
function parseURL(str) {
return str.lastIndexOf("/") > -1 ? str.slice(str.lastIndexOf("/") + 1) : str;
}

return function(files) {
// 选择下载函数
var downer = h5Down ? downloadFile : IEdownloadFile;

// 判断类型,处理下载文件名
if (files instanceof Array) {
for (var i = 0, l = files.length; i < l; i++)
// bug 处理
downer(parseURL(files[i]), files[i], true);
} else if (typeof files === "string") {
downer(parseURL(files), files);
} else {
// 对象
for (var file in files) downer(file, files[file]);
}
}

})();

转载于:https://www.cnblogs.com/djawh/p/4359506.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jersey注解详解

REST 在 2000 年由 Roy Fielding 在博士论文中提出&#xff0c;他是 HTTP 规范 1.0 和 1.1 版的首席作者之一。 REST 中最重要的概念是资源&#xff08;resources&#xff09;&#xff0c;使用全球 ID&#xff08;通常使用 URI&#xff09;标识。客户端应用程序使用 HTTP 方法&…

Struts2配置文件详解

解决在断网环境下,配置文件无提示的问题我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt/ 没有提示,这是因为” http://struts.apache.org/dtds/struts-2.0.dtd”是一个网络地址,如果上网的话,IDE会自动帮我们下载此文件,如果断网就没有办法了,但是我们还…

mysql插入图片数据

import java.sql.*; import java.util.Scanner; import java.io.*; public class mysql插入图片 { private static final File File null;private static String String;public static Connection getConn() { Connection conn null; try { Class.forName("com.…

mybatis插入图片处理--mysql

1. 数据库Scheme 1.数据库SchemeDROP TABLE IF EXISTS user_graphic_t; /*!40101 SET saved_cs_client character_set_client */; /*!40101 SET character_set_client utf8 */; CREATE TABLE user_graphic_t ( id int(11) NOT NULL AUTO_INCREMENT, graph…

careercup-高等难度 18.6

18.6 设计一个算法&#xff0c;给定10亿个数字&#xff0c;找出最小的100万个数字。假定计算机内存足以容纳全部10亿个数字。 解法&#xff1a; 方法1&#xff1a;排序 按升序排序所有的元素&#xff0c;然后取出前100万个数&#xff0c;时间复杂度为O(nlog(n)) 方法2&#xff…

不浮躁的社会是什么样的?

不浮躁就是该吃饭吃饭&#xff0c;该睡觉睡觉。该看书看书&#xff0c;该洗澡洗澡。聊事时聊事&#xff0c;陪朋友时陪朋友。万事各得其所&#xff0c;各安其分&#xff0c;专心在此时此刻&#xff0c;做每一件事。而不是吃饭时想着别人的鱼翅海参&#xff0c;睡觉时想着发票报…

java jre 中导入导出证书

导入证书&#xff1a; 将所要导入的证书放到Javahome的jre/lib/security文件夹中 运行命令jre/bin/keytool-import -alias cacerts -keystore cacerts -file 证书名称 输入默认密码&#xff1a;changeit 导入过程中会交互询问是否信任该证书&#xff0c;输入 yes 导出证书 …

各种类库网址学习

http://shouce.jb51.net/net/index.html转载于:https://www.cnblogs.com/chenls/p/4362730.html

图片的base64编码实现以及网页上显示

生成、解析base64编码的图片 //图片转化成base64字符串 public static String GetImageStr(<span style"font-family: Arial, Helvetica, sans-serif;">String imgFile</span><span style"font-family: Arial, Helvetica, sans-serif;">…

nginx windows 下安装和配置

去nginx官网下载相应的版本 下载地址&#xff1a;http://nginx.org/download/nginx-1.6.2.zip 下载完成解压放到你喜欢的目录下&#xff1b;楼主的放到了F:\nginx 进入windows的cmd窗口&#xff0c;输入如下所示的命令&#xff1a; C:\Users\YiXian>F: F:\>cd nginx s…

c/c++学习书籍

一、c Primer . 目录内容关键字第一章 面向过程编程&#xff0c;面向对象编程&#xff0c;泛型 转载于:https://www.cnblogs.com/bzsh/p/4362930.html

applicationContext.xml 配置文件的存放位置

web.xml中classpath:和classpath*: 有什么区别? classpath&#xff1a;只会到你的class路径中查找找文件; classpath*&#xff1a;不仅包含class路径&#xff0c;还包括jar文件中(class路径)进行查找. 存放位置&#xff1a; 1&#xff1a;src下面 需要在web.xml中定义如下&…

完美攻略心得之圣魔大战3(Castle Fantisia)艾伦希亚战记(艾伦西亚战记)包含重做版(即新艾伦希亚战记)...

&#xff08;城堡幻想曲3&#xff0c;纠正大家个错误哦&#xff0c;不是圣魔大战3&#xff0c;圣魔大战是城堡幻想曲2&#xff0c;圣魔大战不是个系列,艾伦西亚战记艾伦希亚战记,一个游戏日文名&#xff1a;タイトル キャッスルファンタジア &#xff5e;エレンシア戦記&#x…

费波纳茨

//非递归实现static int[] fun(int num){int result[] new int[num];for (int i 1; i < num; i) {if(i<3){result[i-1]i-1;}else{result[i-1]result[i-2]result[i-3];}}return result;} //递归实现static int method(int num){int result 0;if(num < 2){result --n…

Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别

初接触Hadoop技术的朋友肯定会对它体系下寄生的个个开源项目糊涂了&#xff0c;我敢保证Hive,Pig,HBase这些开源技术会把你搞的有些糊涂&#xff0c;不要紧糊涂的不止你一个&#xff0c;如某个菜鸟的帖子的疑问&#xff0c;when to use Hbase and when to use Hive&#xff1f;…

可变形参

public class TestVarargs {/*** param args* YiXian* 2015-3-11*/public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("the program starting>>>>>>>>>>>");test(2,"java权威指…

解决android中Layout文件下的xml文件配好后,R类中不能自动生成相应代码

不能更新的原因: 1.在xml文件中代码错误或者格式错误 2.eclipse 编译器是老版本 3.布局文件的文件名有大写字母 4.含有相同文件名、格式的xml文件解决方法: 1.找到出错的xml文件中的错误代码格式改正&#xff0c;并执行project —clean 操作 2.eclipse 选择Project--Bu…

逻辑运算与位移运算

异或运算True ⊕ False TrueFalse ⊕ True TrueFalse ⊕ False FalseTrue ⊕ True False同或运算True ⊙ False FalseFalse ⊙ True FalseFalse ⊙ False TureTrue ⊙ True Ture或运算True || False TrueFalse || True TrueFalse || False FalseTrue || True Tru…

log4net 日志框架的配置

log4net 日志框架的简单配置 添加对log4net程序集的引用 选择程序集文件添加引用即可&#xff0c;需要注意的是需要添加相应程序版本的程序集&#xff0c;如果你的应用是基于.netFramework2.0&#xff0c;则应选择net 2.0版本的程序集 修改配置文件&#xff0c;配置log4net相…

原码 反码 补码

一.机器数和真值 机器数&#xff1a; 由于一些硬件的限制计算机只能识别二进制数据&#xff0c;因此在计算机中只会存储二进制数据&#xff1b;机器数是带符号的&#xff0c;在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如&#xff0c;十进制中的数 7&#xff0…