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.pswp.cn/news/273345.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273345.shtml
英文地址,請注明出處:http://en.pswp.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…