Struts2上传图片路径问题

zhangww1985 2010-06-13 10:33:32
先把这个方法贴出来
/**
* 保存图片信息
* @throws IOException
*/
public void savePic(){
List<File> files= getUpload();
List<String> ufn = getUploadFileName();

if(files!=null && files.size()>0 ){
for(int i=0;i<files.size();i++){
FileOutputStream fos = null;

String name = System.currentTimeMillis()+this.getExtention(ufn.get(i));

String imageName = ServletActionContext.getServletContext().getRealPath(getSavePath())+"\\"+name;//文件真实路径

String url=getSavePath()+"\\"+name; //保存到数据库

//String imageName =ServletActionContext.getRequest().getContextPath()+"\\WebRoot"+getSavePath()+"\\"+name;
//String isds = System.getProperty("user.dir");
System.out.println(ServletActionContext.getRequest().getRealPath("\\"));
//输出的是 F:\chenghuWorkspace\apache-tomcat-6.0.18\webapps\mms\

byte[] buffer = new byte[1024];
try {
fos = new FileOutputStream(imageName);

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

FileInputStream fis = null; //将文件转成输入流
try {
fis = new FileInputStream(files.get(i));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int len=0;
try {
while((len=fis.read(buffer))>0){
fos.write(buffer,0,len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//图片信息的保存
project.setProjectImage(url);
if(myImageName.get(i)!=null && !myImageName.equals("")){
project.setImageName(myImageName.get(i));
}
}

}else if(myImageName!=null && myImageName.size()>0){
project.setImageName(myImageName.get(0));
}


红色部分取到的是tomcat下的路径,虽然可以保存成功,但若项目重新发布下,里面的文件就全没了
绿色部分取到的是项目路径,而并没有一个完整的项目路径,流写不进去
请问下如果想把上传文件保存到该项目的文件下 应该如何获取项目完整路径呢。
希望高手能指点下.
...全文
778 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoxiang183 2011-07-04
  • 打赏
  • 举报
回复
人家楼主都说了,要上传到项目里的文件夹下,又不是上传到服务器上,假如我把项目从A电脑拷到B电脑,如果上传到服务器上,也就是tomcat里,那项目在B电脑上就显示不出来上传的图片了,人家要的是转移项目到其它电脑都可以显示之前上传的图片,跟意义没关系,会的说下吧!
zhangww1985 2010-06-13
  • 打赏
  • 举报
回复

好吧,就放在服务器下面得了。

多谢两位了,嘿嘿,幸苦啦
izard999 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zhangww1985 的回复:]
文件一定要放在服务器上吗?
[/Quote]
不是一定要放在服务器上, 是你放在本地没什么意义.! 至于说你们什么删了项目我觉得在实际应用中是不是不可能发生的事.? 如果你实在是怕的话,定时备份不就完了
zhangww1985 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zhangww1985 的回复:]
恩,那如果我把服务器的项目删了呢?或者重新部署呢?那文件岂不是都没啦?
[/Quote]

如果这是当然的,那应该是上传的文件就一点意义都没才对呀
Java技术栈 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zhangww1985 的回复:]
恩,那如果我把服务器的项目删了呢?或者重新部署呢?那文件岂不是都没啦?
[/Quote]
这是当然啊

不然你上传还有什么意义??
zhangww1985 2010-06-13
  • 打赏
  • 举报
回复

文件一定要放在服务器上吗?
zhangww1985 2010-06-13
  • 打赏
  • 举报
回复
恩,那如果我把服务器的项目删了呢?或者重新部署呢?那文件岂不是都没啦?
Java技术栈 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhangww1985 的回复:]
youanyyou: 你的那个方法我上面有 他获取到我的路径是F:\chenghuWorkspace\apache-tomcat-6.0.18\webapps\mms\

izard999:我想获取本地的项目路径就不就可以把我所想上传的文件通过流写进去了吗?

是不是还需要配置什么东西呢?
[/Quote]

得到项目某个路径还不好办啊

文件要放在服务器上的
izard999 2010-06-13
  • 打赏
  • 举报
回复
不是.. 你把用户上传的文件存在你本地项目有何意义.? 用户访问的是服务器中的项目,而不是你eclipse工程里面的东西, 明白吗.?
zhangww1985 2010-06-13
  • 打赏
  • 举报
回复
youanyyou: 你的那个方法我上面有 他获取到我的路径是F:\chenghuWorkspace\apache-tomcat-6.0.18\webapps\mms\

izard999:我想获取本地的项目路径就不就可以把我所想上传的文件通过流写进去了吗?

是不是还需要配置什么东西呢?
Java技术栈 2010-06-13
  • 打赏
  • 举报
回复
request.getRealPath("/upload")
izard999 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhangww1985 的回复:]
问题是我获取的path是tomcat下的路径,获取不到项目的路径
[/Quote]
是的.. 你当前的运行环境是什么.? 当然是web容器, 你想获得本地的路径有何意义呢?
Java技术栈 2010-06-13
  • 打赏
  • 举报
回复

文件是保存到服务器上的

你项目重新发布 里面的已上传的文件肯定全没有了啦

在webroot下建立一文件目录upload

然后在后台request.getRealPath(/upload)取的文件保存地址;

试试看
zhangww1985 2010-06-13
  • 打赏
  • 举报
回复
问题是我获取的path是tomcat下的路径,获取不到项目的路径
izard999 2010-06-13
  • 打赏
  • 举报
回复
人家永远访问的是服务器, 而不会是你的机器上的资源阿!
izard999 2010-06-13
  • 打赏
  • 举报
回复
我想知道, 你做程序,保存图片你为何要保存在你的项目下.? 那样你一重部署是肯定没的.!同名会覆盖的.!
所以一般做文件上传本地项目是不存的
zhangww1985 2010-06-13
  • 打赏
  • 举报
回复
恩 我现在只能上传到tomcat下的 不能上传到我的项目下 重新部署是会没的
izard999 2010-06-13
  • 打赏
  • 举报
回复
你文件上传 拿到个路径直接file.renameTo(path)不就好了嘛.
重部署东西就没了?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧