jsp中浏览并选择本地磁盘目录

时间:2022-06-24 12:42:42
我想在jsp中实现 点击浏览按钮可以浏览本地磁盘目录,类似安装文件时选择目标地,不是file文本域

21 个解决方案

#1


首先,jsp语言本身是服务端语言,和本地磁盘目录根本没有任何关系。用jsp去访问本地磁盘是“驴头不对马嘴”的问题,请楼主恶补一下jsp、servlet基础。
其次,如果用客户端脚本语言(js之类的)也无法实现,因为客户端脚本语言规范本身为了安全性,不允许以自定义的方式直接访问本地任何资源(cookie之类有严格访问规定的除外),只能通过浏览器file控件去访问本地磁盘(而且不允许初始化访问路径,想想这是为什么?)
所以你的这个需求从根本上来讲是无法实现的,除非你安装了客户端插件,那其实等于安装了桌面程序,和浏览器就无关了。
记住,一切为了安全性。

#2


可以直接装个Apache服务器,把路径设置为你想公开的磁盘路径,配置中开启目录访问即可。

Tomcat应该也有类似能力,记不清了。


并不清楚楼主的意图是什么,但是:
1、要注意安全性,你这样直接暴露磁盘的做法很危险;
2、有大把做文件共享的工具,比如FTPServer、SMBServer之类的,比你用Tomcat去做这事情,高效多了。

#3


楼主这个“浏览按钮可以浏览本地磁盘目录”是指哪个本地,客户端本地还是服务器本地?

觉得楼主是不是只要一个文件上传的功能啊?可以浏览本地文件,选择要上传的文件。

<input type="file" name="file" id="file">

#4


楼主目的何在?

#5


我在做一个基于c/s的系统,其中有个功能就是要备份数据库,是需要将数据库备份至所选的磁盘目录下,file只是选择本地文件,而我是要选择磁盘目录

#6


C/S 系统跟JSP有毛的关系啊,这个标题太能误导人了。

直接用Swing,里面有个JFileChoose(忘了是不是这个名字了),可以用来选择目录文件。

#7


楼主说的就是文件域
<input type="file" name="file" id="file">
可以找到本地文件
这个就类似安装文件时选择目标地文件
还是你只想或的目录不要文件?

#8


我是要获取目录 不是文件 file只能选择文件 我试过了
我做的是c/s模式的 java web开发,所以肯定需要jsp做页面呈现层滴....

#9


引用 5 楼  的回复:
我在做一个基于c/s的系统,其中有个功能就是要备份数据库,是需要将数据库备份至所选的磁盘目录下,file只是选择本地文件,而我是要选择磁盘目录


如果你想直接用Web页面方式来备份整个目录,这事情Web做不来。

#10


我觉得也确实有困难  

#11


引用 10 楼  的回复:
我觉得也确实有困难


不是简单的困难问题,浏览器安全沙箱根本就不允许你的Web页面主动去把搜索本地某个目录,还上传其所有文件。。。。。。

基本上你要用ActiveX来解决,不过微软提供了一个 Scripting.FileSystemObject 
你可以借助它来做一些事情,但是需要设置目标站点为信任域。

#12


那具体怎么做呢  如何设置目标站点为信任域呢 请继续指点..3Q

#13


引用 12 楼  的回复:
那具体怎么做呢  如何设置目标站点为信任域呢 请继续指点..3Q


信任站点这个设置就太简单了吧。。。自己Google下,就在浏览器的选项里面可以配置的。

然后再自己Google下Scripting.FileSystemObject的API介绍和Demo,它提供绝大多数操作文件的方法。

#14


貌似是跟asp相关的,我做的是java开发

#15


跟ASP没有关系。。。我怎么可能在Java论坛整ASP的东西。。。

Scripting.FileSystemObject 是个ActiveX控件,用JavaScript进行操作。


http://showlike.iteye.com/blog/692300

http://www.legalsoft.com.cn/docs/419.html

最好自己直接去MSDN上学习学习。

#16


楼主,你看看我这个笨思路行得通不,但操作起来有点怪,选择文件得到该文件目录下的所有子文件,思路如下:
1:<input type="file" name="file" id="file">选择一个文件,好像这个方法getAbsolutePath()可以得到一个完整目录加文件名字符串,具体方法查查API;
2:再用File类的getParentFile()得不当前目录的父目录(即上一级目录);
3:再用File类的list()方法得到该文件目录下的所有子文件,目录好像也可以拿到,好像要加什么参数之类的,具体查查API;
4:遍历文件数组,把需要文件写到别的目录。

#17


很感谢大侠为我提供资料 不过我看了下这些都是一些读写文件的操作,我的问题还是没解决,我希望在页面中可以有一个浏览按钮,点击后选择本地磁盘目录 我需要将数据库备份至选中的目录下面

#18


file是必须要选择一个文件的,这样行不通  而我只需要选择目录就可以了

#19


楼主我建议你放弃用网页来实现这个功能吧。
还不如写个桌面程序来实现这个功能。比如swing,可以很轻松的实现。
你可能会说客户不希望安装客户端程序,但你说的这个功能本身就不是web去实现的(安全性问题,ldh911也反复给你解释了,并不是说web功能弱不能实现你那个需求,而是它的初衷就是以安全性为基础考虑的,不允许直接访问客户的私有资源,你想想,如果web客户端随意就能访问你的本地资源,那你开一个网页岂不是你的隐私暴露无遗!)
其实浏览器不也是客户端吗?无非它遵循了某些传输和展示标准而已,而不是像C++、C#、java、delphi等等各有各的标准。如果安装active控件,其实和安装swing桌面程序没有区别,swing程序也可以在网页自动下载安装嘛,只不过它没有内嵌到浏览器中。
楼主,如果你不考虑安全性非要在浏览器中实现这个功能,那你再好好看看ldh911给你的各种建议,应该能够实现。
我想已经说得够清楚了,再纠结我只能说分配给你任务的领导太不会用人了!

#20


thank you very much,你们说的的确有道理,我觉得我也没必要这样做,所以我不会再纠结于此...感谢所有回答我问题的人,谢谢你们..........

#21


建议用applet

#1


首先,jsp语言本身是服务端语言,和本地磁盘目录根本没有任何关系。用jsp去访问本地磁盘是“驴头不对马嘴”的问题,请楼主恶补一下jsp、servlet基础。
其次,如果用客户端脚本语言(js之类的)也无法实现,因为客户端脚本语言规范本身为了安全性,不允许以自定义的方式直接访问本地任何资源(cookie之类有严格访问规定的除外),只能通过浏览器file控件去访问本地磁盘(而且不允许初始化访问路径,想想这是为什么?)
所以你的这个需求从根本上来讲是无法实现的,除非你安装了客户端插件,那其实等于安装了桌面程序,和浏览器就无关了。
记住,一切为了安全性。

#2


可以直接装个Apache服务器,把路径设置为你想公开的磁盘路径,配置中开启目录访问即可。

Tomcat应该也有类似能力,记不清了。


并不清楚楼主的意图是什么,但是:
1、要注意安全性,你这样直接暴露磁盘的做法很危险;
2、有大把做文件共享的工具,比如FTPServer、SMBServer之类的,比你用Tomcat去做这事情,高效多了。

#3


楼主这个“浏览按钮可以浏览本地磁盘目录”是指哪个本地,客户端本地还是服务器本地?

觉得楼主是不是只要一个文件上传的功能啊?可以浏览本地文件,选择要上传的文件。

<input type="file" name="file" id="file">

#4


楼主目的何在?

#5


我在做一个基于c/s的系统,其中有个功能就是要备份数据库,是需要将数据库备份至所选的磁盘目录下,file只是选择本地文件,而我是要选择磁盘目录

#6


C/S 系统跟JSP有毛的关系啊,这个标题太能误导人了。

直接用Swing,里面有个JFileChoose(忘了是不是这个名字了),可以用来选择目录文件。

#7


楼主说的就是文件域
<input type="file" name="file" id="file">
可以找到本地文件
这个就类似安装文件时选择目标地文件
还是你只想或的目录不要文件?

#8


我是要获取目录 不是文件 file只能选择文件 我试过了
我做的是c/s模式的 java web开发,所以肯定需要jsp做页面呈现层滴....

#9


引用 5 楼  的回复:
我在做一个基于c/s的系统,其中有个功能就是要备份数据库,是需要将数据库备份至所选的磁盘目录下,file只是选择本地文件,而我是要选择磁盘目录


如果你想直接用Web页面方式来备份整个目录,这事情Web做不来。

#10


我觉得也确实有困难  

#11


引用 10 楼  的回复:
我觉得也确实有困难


不是简单的困难问题,浏览器安全沙箱根本就不允许你的Web页面主动去把搜索本地某个目录,还上传其所有文件。。。。。。

基本上你要用ActiveX来解决,不过微软提供了一个 Scripting.FileSystemObject 
你可以借助它来做一些事情,但是需要设置目标站点为信任域。

#12


那具体怎么做呢  如何设置目标站点为信任域呢 请继续指点..3Q

#13


引用 12 楼  的回复:
那具体怎么做呢  如何设置目标站点为信任域呢 请继续指点..3Q


信任站点这个设置就太简单了吧。。。自己Google下,就在浏览器的选项里面可以配置的。

然后再自己Google下Scripting.FileSystemObject的API介绍和Demo,它提供绝大多数操作文件的方法。

#14


貌似是跟asp相关的,我做的是java开发

#15


跟ASP没有关系。。。我怎么可能在Java论坛整ASP的东西。。。

Scripting.FileSystemObject 是个ActiveX控件,用JavaScript进行操作。


http://showlike.iteye.com/blog/692300

http://www.legalsoft.com.cn/docs/419.html

最好自己直接去MSDN上学习学习。

#16


楼主,你看看我这个笨思路行得通不,但操作起来有点怪,选择文件得到该文件目录下的所有子文件,思路如下:
1:<input type="file" name="file" id="file">选择一个文件,好像这个方法getAbsolutePath()可以得到一个完整目录加文件名字符串,具体方法查查API;
2:再用File类的getParentFile()得不当前目录的父目录(即上一级目录);
3:再用File类的list()方法得到该文件目录下的所有子文件,目录好像也可以拿到,好像要加什么参数之类的,具体查查API;
4:遍历文件数组,把需要文件写到别的目录。

#17


很感谢大侠为我提供资料 不过我看了下这些都是一些读写文件的操作,我的问题还是没解决,我希望在页面中可以有一个浏览按钮,点击后选择本地磁盘目录 我需要将数据库备份至选中的目录下面

#18


file是必须要选择一个文件的,这样行不通  而我只需要选择目录就可以了

#19


楼主我建议你放弃用网页来实现这个功能吧。
还不如写个桌面程序来实现这个功能。比如swing,可以很轻松的实现。
你可能会说客户不希望安装客户端程序,但你说的这个功能本身就不是web去实现的(安全性问题,ldh911也反复给你解释了,并不是说web功能弱不能实现你那个需求,而是它的初衷就是以安全性为基础考虑的,不允许直接访问客户的私有资源,你想想,如果web客户端随意就能访问你的本地资源,那你开一个网页岂不是你的隐私暴露无遗!)
其实浏览器不也是客户端吗?无非它遵循了某些传输和展示标准而已,而不是像C++、C#、java、delphi等等各有各的标准。如果安装active控件,其实和安装swing桌面程序没有区别,swing程序也可以在网页自动下载安装嘛,只不过它没有内嵌到浏览器中。
楼主,如果你不考虑安全性非要在浏览器中实现这个功能,那你再好好看看ldh911给你的各种建议,应该能够实现。
我想已经说得够清楚了,再纠结我只能说分配给你任务的领导太不会用人了!

#20


thank you very much,你们说的的确有道理,我觉得我也没必要这样做,所以我不会再纠结于此...感谢所有回答我问题的人,谢谢你们..........

#21


建议用applet