老大交给了这么一个任务:
JavaWeb项目,用户在登陆系统时,浏览器自动到文件服务器中去下载一些文件(都是txt格式的日志文件)并保存在本机中。之前是需要用户手动点击下载链接的。
想了半天,都没什么头绪。用JavaScript吗?还是写一个ActiveX控件?
考虑到安全性的问题,浏览器是不能自动去下载文件并保存的啊。
感觉这些都是比较高级的东西了,对于我这么一个刚毕业的小菜,真的有难度啊。
各位兄弟有这方面的经验,还望赐教,小弟不胜感激。

解决方案 »

  1.   

    JS也倒是可以实现的,在登录的时候触发下载的事件就可以了。但是在登录后就提示用户要下载东西这个感觉有些别扭,ActiveX控件感觉要好些。
      

  2.   

    放在登陆的模块里处理,登陆成功后继续做你的这个操作,去读你指定目录下的文件,一个文件一个文件的在写到本地,然后返回。或者模拟URL提交,应该也可以。
      

  3.   

    楼主试试这个控件: http://www.cnblogs.com/xproer/archive/2011/03/26/1996322.html
    默认界面批量下载中下载中...下载完毕
    资源下载:
    CAB安装包
    开发文档
    DEMO示例
      

  4.   

    这个需求普通的JS,或者JSP都没办法实现了。只能用楼上提供的方法来实现。
      

  5.   

    感谢你的回答,
    需求是浏览器不提示下载文件,而且是批量的。在后台运行,感觉有点像挂木马一样
    另外顺便问一下ActiveX控件开发需要准备哪些知识呢?搞不好真的要开发这么一个控件。
      

  6.   

    他们这个产品的价格可以在官网上面看到。http://www.ncmem.com/webplug/http-downloader/index.aspx
    他们官网提供了示例DEMO,你可以下载下来看下。
    我抄了他们的一段示例代码,实现了各种与下载相关的功能。<!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>