在firefox 2中,我能够使用Browse获取路径 - 我使用项目中的路径然后将文件写入该位置。那么现在浏览没有得到路径,有没有人知道用户转到目录并通过网页返回路径的方法,所以我可以将它传递给服务器进行处理?
答案 0 :(得分:2)
查看完整客户端文件路径的能力现在被视为安全风险,并且所有现代浏览器都阻止您看到它(通过Javascript和通过POST形式发送回服务器的信息)。
答案 1 :(得分:2)
使用HTML / JavaScript无法做到这一点。在HTML中,您可以最高使用<input type="file">
来选择文件,但不能选择文件夹。在JS中,您无法在本地磁盘文件系统中执行任何操作,更不用说在DOM树中使用<input type="file">
元素了。您被安全限制所禁止(您作为最终用户当然不会喜欢网站能够在本地磁盘文件系统中无所事事地进行操作)。
您只能通过直接在客户端计算机上运行的小型应用程序来实现。例如,一个(签名!)applet,它基本上只是一个由客户端机器上运行的网页提供的Java代码。您可以使用java.net.URL
和consorts在applet和servlet之间进行通信。然后,在applet中使用Swing's JFileChooser
来创建文件夹或文件选择对话框。
更新:顺便说一句,MSIE和其他一些古老的浏览器会将<input type="file">
的完整客户端磁盘文件系统路径发送到服务器端。这在技术上是错误的(只应发送文件名+扩展名)并且完全是多余的。这些信息在服务器端是没有价值的,因为它无法使用正常的java.io.File
内容访问该文件(除非服务器和客户端都在物理上运行相同的机器,当然这不会' t发生在现实世界中)。获取上传文件的常规方法是解析multipart / form-data请求体(通常使用Apache Commons FileUpload或Servlet 3.0提供HttpServletRequest#getParts()
)。