通过浏览器上传整个目录连同子目录应该是不可能的。
因为<input type=file>这个是只读的,不能通过程序控制值。
另一方面从安全角度来讲也不允许你通过浏览器上传整个目录,你必须一个个确认上传,不可能由浏览器判断整个就将整个目录文件上传了。
如果可以的话,那么你本地的文件就不安全了,显然这是不允许的。

解决方案 »

  1.   

    如果一个一个的上传的话,我需要得到上传目录下的文件列表,我怎么才能做到选择一个目录,然后得到该目录下的文件列表呢?我得到了文件列表以后,我如何才能把取得的文件列表提交给FORM.谢谢各位了,希望给个提示~~
      

  2.   

    得到上传目录的文件列表也许可能,不过如果不用APPLET、activeX之类的东西,单纯使用标准的脚本和HTML技术从安全角度论证应该也是不可能的。
      即使有可能也没有意义,我说过:FROM中的<input type=file>是只读的,也就是说你无法通过任何第三方脚本把文件传给它,唯一办法就是点击该文件浏览按钮选择一个文件,除此之外没有任何办法可以将一个文件传给这个<input type=file>
      简言之,在DHTML技术范围内:
      1、可以一次上传多个文件,但是你必须一个个点击浏览选择文件,点击浏览选择文件,最后点击提交按钮完成上传。
      2、不可能选择一个目录后自动将其内文件及子目录文件同时上传。
      3、不可能将目录结构信息通过<input type=file>上传到服务器上,除非自己另外用一个<input type=text>之类的主动人工告知,自动分析是不可能的。
      总结:你提的问题在DHTML范围内是不可能的。
      

  3.   

    我觉得有一个解决办法,你在客户端写一个applet,然后将选中的目录全部文件序列化入一个Stream,然后建立一个与服务器的连接,在由服务器读取解析。
    哈哈。。不过这么做有必要吗?
      

  4.   

    在www.cnjsp.com上有源代码可以参考,改改就成
      

  5.   

    to:javaboy
    谢谢你的分析,不过假如说我已经得到了文件的列表,我怎么才能把这些列表包存到一个隐藏的form的input中呢,如果能这样的话,我也可以通过smartUpload传上去,不过这样做的后果是我需要在服务器上建立和客户端相同的目录结构.
    to:orant
    我都找了好几天了,根本找不到,如果你看到过,给个详细的连接过来看看,谢谢.
      

  6.   

    to anonimousboy(stiwen):
      “不过假如说我已经得到了文件的列表,我怎么才能把这些列表包存到一个隐藏的form的input中呢”
      请input type=file而言,这是不可能的,其它的可以,我已经说了<input type=file>这是只读的,也就是说只能点击浏览按钮设置,不能通过任何脚本对其设置值。
      

  7.   

    自己用java来写一个io的类来实现就可以了,很简单的,能够实现整个目录的上传