怎么样上传文件到java的工作目录中,而不是服务器目录中(tomcat安装目录)

时间:2021-10-04 12:13:46
各位好:
如题,我在网上找了一些方法,但是还是不行,得到的还是tomcat安装目录!
我的tomcat安装在d盘,项目开发目录在e盘,比如我的项目名叫test那我想要得到e:/workspace/test该怎么做?
 我已经在tomcat的server.xml中增加:<Context path="/test" docBase="E:/workspace/test" reloadable="true"/>了,但是我在代码中使用:
 request.getSession().getServletContext().getRealPath("/")
 得到的还是tomcat的安装目录。
 请问怎么解决,谢谢!

16 个解决方案

#1


直接添加一个属性文件、存储你想存储的路径!
然后上传文件的时候直接读取属性文件里面的值!

#2


关键是每次上传,目录都不一定一样。

#3


文件目录使用绝对路径。

#4


引用 3 楼 hucp2007 的回复:
文件目录使用绝对路径。

这种方式我也想到过,现在我的工程是在E盘,如果我放到D盘后,那不得改很多地方啊。
应该是有办法的,我在网上查了一下,有相关的帖子。但是最后帖子的LZ没有把解决问题的方法贴出来。
大概的意思就是配置tomcat,然后在代码中使用request.getSession().getServletContext().getRealPath("/")。
在我在server.xml中增加:<Context path="/test" docBase="E:/workspace/test" reloadable="true"/>之前,我使用request.getSession().getServletContext().getRealPath("/")得到的是:/test,设置后,得到的是:D:/tomcat/webapp/text,而不是我想要的:E:/workspace/test

#5


1、request.getSession().getServletContext().getRealPath("/")取到的应该是tomcat应用根目录
2、建议lz用一个配置文件或配置项存放文件根目录,以后修改起来也方便,又不需要编译

#6


引用 2 楼 sen_linzhiwang 的回复:
关键是每次上传,目录都不一定一样。


你每次上传的目录不一样的地方无法就是文件名称跟存储文件的文件夹名称嘛!!!
在文件中值写上:E:/workspace/test
然后读取的时候加上你的文件名称或者文件夹名称不就行了?
在说如果你是说每次根目录都不一样、这次是E盘、下次是D盘、那你这样配置也是废的嘛!!!
<Context path="/test" docBase="E:/workspace/test" reloadable="true"/>
这样每次还不都是E盘!!!

#7


引用 6 楼 hzw2312 的回复:
引用 2 楼 sen_linzhiwang 的回复:关键是每次上传,目录都不一定一样。

你每次上传的目录不一样的地方无法就是文件名称跟存储文件的文件夹名称嘛!!!
在文件中值写上:E:/workspace/test
然后读取的时候加上你的文件名称或者文件夹名称不就行了?
在说如果你是说每次根目录都不一样、这次是E盘、下次是D盘、那你这样配置也是废的嘛!!!
……

这样的话,每次只需要修改tomcat的配置文件就行了。

#8


引用 7 楼 sen_linzhiwang 的回复:
引用 6 楼 hzw2312 的回复:引用 2 楼 sen_linzhiwang 的回复:关键是每次上传,目录都不一定一样。

你每次上传的目录不一样的地方无法就是文件名称跟存储文件的文件夹名称嘛!!!
在文件中值写上:E:/workspace/test
然后读取的时候加上你的文件名称或者文件夹名称不就行了?
在说如果你是说每次根目录都不一样、这次是E盘、下次是……


如果你弄成属性文件也是一样的!!!
属性文件也可以修改~~~跟配置文件一样的!

#9


好吧,虽然不是我想要的答案,但是如果实在没有人提出按我的思路得出的答案,那就只能这样了。

#10


你自己弄一个配置文件,存放你的目标路径就好了。TXT或者XML或者properties都可以

#11


在文件上传的过程中,由于开发环境和生产环境的不一致,开发环境一般是Windows,但是生产环境一般是Linux或者Unix,文件的目录结构和路径表示肯定是不一样的,所以有文件上传的,文件路径应该是在配置文件里面配置的。

#12


谢谢各位,我已经使用配置文件的方式完成,具体的方法为:
1、在项目的src目录下或别的目录下创建properties文件,取名:test.properties,里面的内容为:
workspacePath=G:/javaworkspace
2、在需要上传文件的class中如下使用:
PropertiesUtils pro = new PropertiesUtils();
pro.getFile("test.properties");
3、获取工程工作区路径:
pro.read("workspacePath");
当然,到这里为止,就可以得到想要得到的效果。

如果哪位大虾不用配置文件的方式,也不用绝对路径的方式,只使用request,response,application这几个对象能够得到工作路径,那麻烦把代码帖出来让我学习一下。
谢谢!

#13


把要保存文件的根目录写到配置文件中,再根据文件分类建立目录、子目录。

#14


配置文件是最好的解决办法楼主,通过程序去获取的都是你的tomcat下的路径!

#15


打个比方,如果楼主的项目是很大的项目,图片、css、js等文件不可能放在同一个服务器上,因此楼主必须用地址去访问你存放这些的服务器,但是楼主自身项目不可能一次性写死这个资源地址,所以只有通过配置文件来配置,以后如果图片服务器发生迁移,只用改图片地址,项目正常运行,类似的其他的也一样。

#16


引用 15 楼 sgyyz 的回复:
打个比方,如果楼主的项目是很大的项目,图片、css、js等文件不可能放在同一个服务器上,因此楼主必须用地址去访问你存放这些的服务器,但是楼主自身项目不可能一次性写死这个资源地址,所以只有通过配置文件来配置,以后如果图片服务器发生迁移,只用改图片地址,项目正常运行,类似的其他的也一样。

有道理,谢谢开导。之前我一直纠结于通过程序去获取项目开发路径,想想也是不够明志。

#1


直接添加一个属性文件、存储你想存储的路径!
然后上传文件的时候直接读取属性文件里面的值!

#2


关键是每次上传,目录都不一定一样。

#3


文件目录使用绝对路径。

#4


引用 3 楼 hucp2007 的回复:
文件目录使用绝对路径。

这种方式我也想到过,现在我的工程是在E盘,如果我放到D盘后,那不得改很多地方啊。
应该是有办法的,我在网上查了一下,有相关的帖子。但是最后帖子的LZ没有把解决问题的方法贴出来。
大概的意思就是配置tomcat,然后在代码中使用request.getSession().getServletContext().getRealPath("/")。
在我在server.xml中增加:<Context path="/test" docBase="E:/workspace/test" reloadable="true"/>之前,我使用request.getSession().getServletContext().getRealPath("/")得到的是:/test,设置后,得到的是:D:/tomcat/webapp/text,而不是我想要的:E:/workspace/test

#5


1、request.getSession().getServletContext().getRealPath("/")取到的应该是tomcat应用根目录
2、建议lz用一个配置文件或配置项存放文件根目录,以后修改起来也方便,又不需要编译

#6


引用 2 楼 sen_linzhiwang 的回复:
关键是每次上传,目录都不一定一样。


你每次上传的目录不一样的地方无法就是文件名称跟存储文件的文件夹名称嘛!!!
在文件中值写上:E:/workspace/test
然后读取的时候加上你的文件名称或者文件夹名称不就行了?
在说如果你是说每次根目录都不一样、这次是E盘、下次是D盘、那你这样配置也是废的嘛!!!
<Context path="/test" docBase="E:/workspace/test" reloadable="true"/>
这样每次还不都是E盘!!!

#7


引用 6 楼 hzw2312 的回复:
引用 2 楼 sen_linzhiwang 的回复:关键是每次上传,目录都不一定一样。

你每次上传的目录不一样的地方无法就是文件名称跟存储文件的文件夹名称嘛!!!
在文件中值写上:E:/workspace/test
然后读取的时候加上你的文件名称或者文件夹名称不就行了?
在说如果你是说每次根目录都不一样、这次是E盘、下次是D盘、那你这样配置也是废的嘛!!!
……

这样的话,每次只需要修改tomcat的配置文件就行了。

#8


引用 7 楼 sen_linzhiwang 的回复:
引用 6 楼 hzw2312 的回复:引用 2 楼 sen_linzhiwang 的回复:关键是每次上传,目录都不一定一样。

你每次上传的目录不一样的地方无法就是文件名称跟存储文件的文件夹名称嘛!!!
在文件中值写上:E:/workspace/test
然后读取的时候加上你的文件名称或者文件夹名称不就行了?
在说如果你是说每次根目录都不一样、这次是E盘、下次是……


如果你弄成属性文件也是一样的!!!
属性文件也可以修改~~~跟配置文件一样的!

#9


好吧,虽然不是我想要的答案,但是如果实在没有人提出按我的思路得出的答案,那就只能这样了。

#10


你自己弄一个配置文件,存放你的目标路径就好了。TXT或者XML或者properties都可以

#11


在文件上传的过程中,由于开发环境和生产环境的不一致,开发环境一般是Windows,但是生产环境一般是Linux或者Unix,文件的目录结构和路径表示肯定是不一样的,所以有文件上传的,文件路径应该是在配置文件里面配置的。

#12


谢谢各位,我已经使用配置文件的方式完成,具体的方法为:
1、在项目的src目录下或别的目录下创建properties文件,取名:test.properties,里面的内容为:
workspacePath=G:/javaworkspace
2、在需要上传文件的class中如下使用:
PropertiesUtils pro = new PropertiesUtils();
pro.getFile("test.properties");
3、获取工程工作区路径:
pro.read("workspacePath");
当然,到这里为止,就可以得到想要得到的效果。

如果哪位大虾不用配置文件的方式,也不用绝对路径的方式,只使用request,response,application这几个对象能够得到工作路径,那麻烦把代码帖出来让我学习一下。
谢谢!

#13


把要保存文件的根目录写到配置文件中,再根据文件分类建立目录、子目录。

#14


配置文件是最好的解决办法楼主,通过程序去获取的都是你的tomcat下的路径!

#15


打个比方,如果楼主的项目是很大的项目,图片、css、js等文件不可能放在同一个服务器上,因此楼主必须用地址去访问你存放这些的服务器,但是楼主自身项目不可能一次性写死这个资源地址,所以只有通过配置文件来配置,以后如果图片服务器发生迁移,只用改图片地址,项目正常运行,类似的其他的也一样。

#16


引用 15 楼 sgyyz 的回复:
打个比方,如果楼主的项目是很大的项目,图片、css、js等文件不可能放在同一个服务器上,因此楼主必须用地址去访问你存放这些的服务器,但是楼主自身项目不可能一次性写死这个资源地址,所以只有通过配置文件来配置,以后如果图片服务器发生迁移,只用改图片地址,项目正常运行,类似的其他的也一样。

有道理,谢谢开导。之前我一直纠结于通过程序去获取项目开发路径,想想也是不够明志。