js 下载文件到本地

小菜来袭 2015-11-09 05:09:04
现在需要用js写一个下载的功能 要求兼容性要好(IE 火狐 谷歌) 文件的路径地址已经获取到
在网上看了许多代码 大部分都是只支持火狐 而且下载文件的 名称 后缀都是已经写死的! 这样行不通 下面是网上的代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>网页HTML存本地</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
</head>
<body>
<a href="#">保存文件</a>
<script>
function fake_click(obj) {
var ev = document.createEvent("MouseEvents");
ev.initMouseEvent(
"click", true, false, window, 0, 0, 0, 0, 0
, false, false, false, false, 0, null
);
obj.dispatchEvent(ev);
}

function export_raw(name, data) {
var urlObject = window.URL || window.webkitURL || window;

var export_blob = new Blob([data]);

var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
save_link.href = urlObject.createObjectURL(export_blob);
save_link.download = name;
fake_click(save_link);
}
var test=document.getElementsByTagName('html')[0].outerHTML;
console.log(test);
$('a').click(function() {
export_raw('test.html', test);
});
</script>
</body>
</html>


上面的代码可以实现火狐的下载 但是其他浏览器的都不行 而且名称 和后缀 都写死的
求一种可以实用的js下载代码 或者思路
...全文
5978 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
caehonao 2015-11-10
  • 打赏
  • 举报
回复
引用 2 楼 bzerah 的回复:
Xproer.HttpDownloader:http://www.cnblogs.com/xproer/archive/2011/03/26/1996322.html 示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>HTTP文件下载控件演示页面</title>
    <link type="text/css" href="HttpDownloader/HttpDownloader.css" rel="Stylesheet"/>
    <script type="text/javascript" src="HttpDownloader/HttpDownloader.js" charset="utf-8"></script>
</head>
<body>
<input type="button" value="下载测试文件" onclick="StartDown()" />
<div id="downDiv"></div>
    <script type="text/javascript" language="javascript">
    	var downerMgr = new FileDownloaderMgr();
    	downerMgr.Config["Folder"] = "F:\\";

		window.onload = function()
		{
    			downerMgr.LoadTo("downDiv");
		};
		
		function StartDown()
		{
			//添加到下载队列
			downerMgr.AddFile("http://www.ncmem.com/images/ico-ftp.jpg");
			downerMgr.PostFirst();
		}

		function copyFile()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.CopyFile("f:\\ftp\\test.gif","f:\\ftp\\test1.gif");
		}

		function copyFolder()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.CopyFile("f:\\ftp\\test.gif","f:\\ftp\\ftp1");
		}
		
		function moveFile()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.MoveFile("f:\\ftp\\test.gif","f:\\ftp\\test2.gif");
		}
		
		function moveFolder()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.MoveFile("f:\\ftp\\test2.gif","f:\\ftp\\ftp1");
		}
		
	</script>
	<input type="button" value="复制到文件" onclick="copyFile()" />
	<input type="button" value="复制到文件夹" onclick="copyFolder()" />
	<input type="button" value="移动文件" onclick="moveFile()" />
	<input type="button" value="移动到文件夹" onclick="moveFolder()" />
</body>
</html>
资源下载: cab安装包(x86) cab安装包(x64) xpi安装包 crx安装包 exe安装包 开发文档 根证书(访问密码 9295) asp.net示例 jsp-access示例 jsp-mysql示例 jsp-oracle示例 jsp-sql示例 php-sql示例
貌似不错。先收下了。
bzerah 2015-11-10
  • 打赏
  • 举报
回复
楼主试试这个控件:http://www.cnblogs.com/xproer/archive/2011/03/26/1996322.html 默认界面 批量下载中 下载中... 下载完毕 文件夹下载中... 示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>HTTP文件下载控件演示页面</title>
    <link type="text/css" href="HttpDownloader/HttpDownloader.css" rel="Stylesheet"/>
    <script type="text/javascript" src="HttpDownloader/HttpDownloader.js" charset="utf-8"></script>
</head>
<body>
<input type="button" value="下载测试文件" onclick="StartDown()" />
<div id="downDiv"></div>
    <script type="text/javascript" language="javascript">
    	var downerMgr = new FileDownloaderMgr();
    	downerMgr.Config["Folder"] = "F:\\";

		window.onload = function()
		{
    			downerMgr.LoadTo("downDiv");
		};
		
		function StartDown()
		{
			//添加到下载队列
			downerMgr.AddFile("http://www.ncmem.com/images/ico-ftp.jpg");
			downerMgr.PostFirst();
		}

		function copyFile()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.CopyFile("f:\\ftp\\test.gif","f:\\ftp\\test1.gif");
		}

		function copyFolder()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.CopyFile("f:\\ftp\\test.gif","f:\\ftp\\ftp1");
		}
		
		function moveFile()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.MoveFile("f:\\ftp\\test.gif","f:\\ftp\\test2.gif");
		}
		
		function moveFolder()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.MoveFile("f:\\ftp\\test2.gif","f:\\ftp\\ftp1");
		}
		
	</script>
	<input type="button" value="复制到文件" onclick="copyFile()" />
	<input type="button" value="复制到文件夹" onclick="copyFolder()" />
	<input type="button" value="移动文件" onclick="moveFile()" />
	<input type="button" value="移动到文件夹" onclick="moveFolder()" />
</body>
</html>
资源下载: cab安装包(x86) cab安装包(x64) xpi安装包 crx安装包 exe安装包 开发文档 根证书(访问密码 9295) asp.net示例 jsp-access示例 jsp-mysql示例 jsp-oracle示例 jsp-sql示例 php-sql示例
activexme 2015-11-10
  • 打赏
  • 举报
回复
引用 楼主 u011954277 的回复:
现在需要用js写一个下载的功能 要求兼容性要好(IE 火狐 谷歌) 文件的路径地址已经获取到 在网上看了许多代码 大部分都是只支持火狐 而且下载文件的 名称 后缀都是已经写死的! 这样行不通 下面是网上的代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>网页HTML存本地</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
</head>
<body>
<a href="#">保存文件</a>
<script>
function fake_click(obj) {
    var ev = document.createEvent("MouseEvents");
    ev.initMouseEvent(
        "click", true, false, window, 0, 0, 0, 0, 0
        , false, false, false, false, 0, null
        );
    obj.dispatchEvent(ev);
}
  
function export_raw(name, data) {
   var urlObject = window.URL || window.webkitURL || window;
  
   var export_blob = new Blob([data]);
  
   var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
   save_link.href = urlObject.createObjectURL(export_blob);
   save_link.download = name;
   fake_click(save_link);
}
var test=document.getElementsByTagName('html')[0].outerHTML;
console.log(test);
$('a').click(function() {
export_raw('test.html', test);
});
</script>
</body>
</html>
上面的代码可以实现火狐的下载 但是其他浏览器的都不行 而且名称 和后缀 都写死的 求一种可以实用的js下载代码 或者思路
只能用控件来做。普通JS做都无法达到期望的结果。
小菜来袭 2015-11-10
  • 打赏
  • 举报
回复
有没有不是控件的 纯asp.net 代码的

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧