当前位置:编程学习 > JAVA >>

请问各位牛人 java如何实现下载文件进度条

java从服务器端下载文件没话说,大家都会。但是如何在客户端显示文件下载情况的进度条呢?即不用系统默认的文件下载,这样做就相当于自己做了一个下载软件。请问有什么思路。。。。 --------------------编程问答-------------------- 这个必须要用控件啊 --------------------编程问答-------------------- 上传显示进度条很多,下载一半浏览器自己会计算还有多少时间下载完,何必还要自己写控件? --------------------编程问答-------------------- 设置下Response.setHeader("Content-Length", fileLength);
浏览器就能知道文件大小,自动帮你显示进度了 --------------------编程问答--------------------
引用 楼主 lixiaomeng627 的回复:
java从服务器端下载文件没话说,大家都会。但是如何在客户端显示文件下载情况的进度条呢?即不用系统默认的文件下载,这样做就相当于自己做了一个下载软件。请问有什么思路。。。。

你请求的时候头文件会有整个大小,然后你不是有个流去读么,流读了多少都知道,还不能算进度? --------------------编程问答--------------------
引用 4 楼 wapigzhu 的回复:
引用 楼主 lixiaomeng627 的回复:
java从服务器端下载文件没话说,大家都会。但是如何在客户端显示文件下载情况的进度条呢?即不用系统默认的文件下载,这样做就相当于自己做了一个下载软件。请问有什么思路。。。。
你请求的时候头文件会有整个大小,然后你不是有个流去读么,流读了多少都知道,还不能算进度?


这个流读是在浏览器弹出保存对话框后你选择了保存路径后开始读的,我问的是不用浏览器带的下载软件,就是相当于自己开发个,那么保存路径怎么得到?  你能明白我说的什么意思吗? --------------------编程问答--------------------
引用 3 楼 torytin 的回复:
设置下Response.setHeader("Content-Length", fileLength);
浏览器就能知道文件大小,自动帮你显示进度了

正解 ! --------------------编程问答--------------------
引用 楼主 lixiaomeng627 的回复:
java从服务器端下载文件没话说,大家都会。但是如何在客户端显示文件下载情况的进度条呢?即不用系统默认的文件下载,这样做就相当于自己做了一个下载软件。请问有什么思路。。。。
得用ActiveX开发。现在网上已经有这种文件下载控件了,楼主你可以搜一下。 --------------------编程问答--------------------
引用 楼主 lixiaomeng627 的回复:
java从服务器端下载文件没话说,大家都会。但是如何在客户端显示文件下载情况的进度条呢?即不用系统默认的文件下载,这样做就相当于自己做了一个下载软件。请问有什么思路。。。。
楼主试试这个控件: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:\\";
     downerMgr.LoadTo("downDiv");

window.onload = function()
{
downerMgr.Init();
};

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安装包
开发文档
根证书
DEMO示例
--------------------编程问答--------------------
引用 楼主 lixiaomeng627 的回复:
java从服务器端下载文件没话说,大家都会。但是如何在客户端显示文件下载情况的进度条呢?即不用系统默认的文件下载,这样做就相当于自己做了一个下载软件。请问有什么思路。。。。
你这个需求和迅雷的在线WEB下载控件一样。迅雷那个是用ActiveX控件开发的。然后前端用JS。下载逻辑都封装在ActiveX中,控件提供事件给JS。JS只需要负责与用户的交互。 --------------------编程问答--------------------
引用 8 楼 fLiow6enn 的回复:
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:\\";
     downerMgr.LoadTo("downDiv");

window.onload = function()
{
downerMgr.Init();
};

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安装包
开发文档
根证书
DEMO示例
我们公司给电信做的一个项目是用的这个控件。还不错,他们也是用ActiveX开发的。接口比较丰富,二次开发比较方便。文档也比较齐全和详细,这个比较难得。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,