我搜索了好久都没找到合适的,只好发帖寻求帮助了。
大家都用过迅雷吧,我想实现的功能就是像迅雷中点击下载后出现的存储目录后面那个浏览按钮的功能,点击一下能看到本地硬盘的所有文件夹,选择一个目录点击确定就自动添加到按钮前面的对话框里了。
小弟,初学者想破脑袋都不知给如何实现,希望高手指点啊。
能尽量说的详细点,最好能分步骤说清楚,偶很菜的。。
先谢谢了!
把能给的积分全花上。。

解决方案 »

  1.   

    lz的意思是不是点击"下载"以后可以自己选择路径然后下载吗?
    是的话,有很多封装好的js都可以实现,上网搜一下
      

  2.   

    迅雷的是用自己写的COM  来调用的。
      

  3.   

    我在jsp中如何实现这个功能呢?1楼说的似乎很对,但我实在自己找不到。希望找个朋友能教我。
    这是小弟初次发问,所有积分绝对一点不留。
    最好能有个高手在线请教,本人QQ164292407,结贴散分。
      

  4.   

    <input type="file" > 看看先
      

  5.   

    <input type=file id="mxh"> 
    <input type=button onclick="alert(document.all.mxh.value)" value="get"> 
      

  6.   

    参考一下这个帖子,应该能完成你的功能!
    http://topic.csdn.net/t/20021223/21/1293167.html
      

  7.   

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head>
    <body>
    <table border="0" cellpadding="0" width="100%" id="tb_show">
    <tr>
    <td width="18%">文件保存位置:</td>
    <td width="82%"> 
    <%--<html:file property="file" size="40"  styleClass="inputbox"/>--%>
    <input name="backDir" type="text" value ="C:\" size="100" width="500">
    </td>
    </tr>

    <tr>
    <td>目录位置:</td>
    <td> 
    <select name="tables_drive" id="tables_drives" onchange="get_drives()" ></select>
    </td>
    </tr>

    <tr>
    <td colspan="2">
    <select name="table_folder" id="table_folder"  size="10" multiple ondblclick="get_file()"></select>
    </td>
    </tr> <tr>
        <td colspan="2">
    <font color="red">说明:双击列表框的一个选项,就将该文件夹下面的文件夹显示在该列表框中。第一个就是根目录</font>
    </td>
    </tr>
    </table>
    </body>
    </html>
    <script>
    /*
    *初始化,将系统所有的驱动器放入table_drives列表
    */
    window.onload = new function init()
    {
    var fso, s, n, e, x;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    e = new Enumerator(fso.Drives);
    s = "";
    for (; !e.atEnd(); e.moveNext())
    {
      x = e.item();
      s = s + x.DriveLetter;
      s += ":";
          if (x.DriveType == 3)
             n = x.ShareName;
          else if (x.IsReady)
             n = x.VolumeName;
          else
             n = "[驱动器未就绪]";
          s +=   n + ",";
    }
    var drives = s.split(",");
    var tableDrives = document.getElementById("tables_drives");
    for ( var i = 0; i < drives.length-1; i++ )
    {
    var option = document.createElement("OPTION");
    drives[i].split(":");
    option.value = "["+drives[i].split(":")[0]+":]"+drives[i].split(":")[1];
    option.text = "["+drives[i].split(":")[0]+":]"+drives[i].split(":")[1];
    tableDrives.add(option);
    }
    }/*
    *tables_drives列表中选中的驱动器上所有文件夹放入table_folder列表中
    */
    function get_drives()
    {
    var tableDrives = document.getElementById("tables_drives");
    var tableFolders = document.getElementById("table_folder");
    for ( var i = 0; i < tableDrives.options.length; i++ )
    {
    if ( tableDrives.options[i].selected == true )
    {
    var fso, f, fc, s;
    var drive = tableDrives.options[i].value.split(":")[0].substring(1,tableDrives.options[i].value.split(":")[0].length);
    document.getElementById("backDir").value = drive + ":\\";
    fso = new ActiveXObject("Scripting.FileSystemObject");
     if (fso.DriveExists(drive))
    {
    d = fso.GetDrive(drive);
    if ( d.IsReady )
    {
    f = fso.GetFolder(d.RootFolder); 
    fc = new Enumerator(f.SubFolders);
    s = "";
    for (;!fc.atEnd(); fc.moveNext())
    {
     s += fc.item();
     s += ",";
    }

    var len = tableFolders.options.length;
    while(len >= 0)
    {
    tableFolders.options.remove(len);
    len--;
    }
    var option = document.createElement("OPTION");
    option.value = drive + ":\\";
    option.text = drive + ":\\";
    tableFolders.add(option);
    var folders = s.split(",");   
    for ( j = 0; j < folders.length -1; j++)
    {
    option = document.createElement("OPTION");
    option.value =  folders[j];
    option.text = folders[j];
    tableFolders.add(option);
    }
    }
    else
    {
    alert("无法改变当前内容!")
    }
    }
    else
    return false;  
    }
    }
    }/*
    *table_folder双击选项中的一个选项,就将该文件夹下面的文件夹显示在table_folder列表中。
    */
    function get_file()
    {
    var tableFolders = document.getElementById("table_folder");
    var tableDrives = document.getElementById("tables_drives");
    for ( var i = 0; i < tableFolders.options.length; i++ )
    {
    if ( tableFolders.options[i].selected == true )
    {
    var fso, f, fc, s;
    var folderpath = tableFolders.options[i].value.substring(0,tableFolders.options[i].value.length);
    if ( folderpath.charAt(folderpath.length-1) == "\\" )
    {
    document.getElementById("backDir").value = folderpath;
    }
    else
    {
    document.getElementById("backDir").value = folderpath + "\\";
    }


    fso = new ActiveXObject("Scripting.FileSystemObject");
    f = fso.GetFolder(folderpath); 
    fc = new Enumerator(f.SubFolders);
    s = "";
    for (;!fc.atEnd(); fc.moveNext())
    {
     s += fc.item();
     s += ",";
    }
    var len = tableFolders.options.length;
    while(len >= 0)
    {
    tableFolders.options.remove(len);
    len--;
    }
    var opt = "";
    var opt1 = "";
    for ( j = 0; j < folderpath.split("\\").length; j++ )
    {
    var option = document.createElement("OPTION");
    opt = opt + folderpath.split("\\")[j]+"\\";
    if ( j > 0)
    {
    opt1 = opt;
    option.value = opt1.substring(0,opt1.length-1);
    option.text = opt1.substring(0,opt1.length-1);
    tableFolders.add(option);
    }
    else
    {
    option.value = opt;
    option.text = opt;
    tableFolders.add(option);
    }

    }
    if ( tableFolders.options[0].value == tableFolders.options[1].value )
    {
    tableFolders.options.remove(1);

    if ( s != "" )
    {
    var folders = s.split(",");   
    for ( j = 0; j < folders.length -1; j++)
    {
    option = document.createElement("OPTION");
    option.value = folders[j];
    option.text = folders[j];
    tableFolders.add(option);
    }
    }
    }
    }
    }
    </script>
      

  8.   

    <input type="file" >
    有些像了。
    我想实现的是像我们安装程序时用的那种,选择一个目录,确定后就能直接把文件下载到所选目录里了