关于在SmartUpload上传时相对路径的问题?

ruoye_2008 2008-12-04 10:23:30
假如我当前的项目结构如下(是用MyEclipse建的):
Aa(项目名)
src
cn.aa.servlet
UploadServlet.java(这是一个servlet)
……
WebRoot
upload(文件夹)
……
WEB-INF
index.jsp

假如index.jsp页面是一个上传页面,点上传后就进入UploadServlet.java这个Servlet中进行上传处理并将所上传的文件保存至upload文件夹下:
SmartUpload su = new SmartUpload();
su.initialize(servlet.getServletConfig(), request,response);
su.upload();
su.save("/Aa/upload");

这个路径我这样写,系统就报出路径错误,到底应刻如何写啊?


...全文
477 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruoye_2008 2008-12-09
  • 打赏
  • 举报
回复
这个与url-pattern无关吧!
zou_wei_forever 2008-12-08
  • 打赏
  • 举报
回复
你的UploadServlet.java这个servlet是如何配置的呢?它的url-pattern是什么?
qjlsharp 2008-12-06
  • 打赏
  • 举报
回复
su.save("/upload");
这个就是你想要的相对路径,你试试,不好用在说
ruoye_2008 2008-12-06
  • 打赏
  • 举报
回复
上传方面的知识我懂,平时我看一些例子,这些例子里对于上传的处理都是直接写在JSP页面的,所以它可以轻松的获取相对这些JSP页面的上传的路径。可是,如果把这些上传的代码放在封装类里面,那它应该怎样获取上传路径啊?

Aa(项目名)
src
cn.aa.servlet
UploadServlet.java(这是一个servlet)
……
WebRoot
upload(文件夹)
……
WEB-INF
index.jsp


对于在封装类里(其实也就是Servlet里),我平时一直都是通过System.getProperty("user.dir")这种方法获取当前服务器所在的磁盘路径,也就是绝对路径了,如:D:/java/tomcat6.0.18/Aa/upload/(其中tree是项目名)。可以,如果不用这种方法,而是su.save("http://localhost:8080/tree/upload"),可这种为什么就不行呢?
sebatinsky 2008-12-06
  • 打赏
  • 举报
回复
楼主,给你一个建议,先去认识一下上传问题,也就是最基本的东西,关于那几个包,可以先认识一下API,还有可以看看Google之类的吧,到时候,你就会知道,其实路径,可以自己设定,可以取得,当然,给出的方式有好几种,无非就是最常用的哪几种,你去看看API,里面几乎都有说明,
呵呵,希望解决问题。

[Quote=引用 6 楼 Rachael1001 的回复:]
在写java程序时不可避免要获取文件的路径...总结一下:

1.可以在servlet的init方法里
String path = getServletContext().getRealPath("/");
这将获取web项目的全路径
例如 :E:\eclipseM9\workspace\tree\
tree是我web项目的根目录

2.你也可以随时在任意的class里调用
this.getClass().getClassLoader().getResource("/").getPath();
这将获取 到classes目录的全路径
例如 : E:\eclipseM9/workspace/t…
[/Quote]
ruoye_2008 2008-12-05
  • 打赏
  • 举报
回复
我主要是在WEB上用,但楼上的这种获得WEB上的路径对于上传路径好像行不通吧,我感觉对于上传路径用本地的路径还可以,但用WEB上的相对项目名就似乎行不通了。
dpf5212 2008-12-05
  • 打赏
  • 举报
回复
相对路径是可以upload/
Rachael1001 2008-12-04
  • 打赏
  • 举报
回复
在写java程序时不可避免要获取文件的路径...总结一下:

1.可以在servlet的init方法里
String path = getServletContext().getRealPath("/");
这将获取web项目的全路径
例如 :E:\eclipseM9\workspace\tree\
tree是我web项目的根目录

2.你也可以随时在任意的class里调用
this.getClass().getClassLoader().getResource("/").getPath();
这将获取 到classes目录的全路径
例如 : E:\eclipseM9/workspace/tree/WEB-INF/classes/

这个方法也可以不在web环境里确定路径,比较好用

3.request.getContextPath();
获得web根的上下文环境
如 /tree
tree是我的web项目的root context
myjava_024 2008-12-04
  • 打赏
  • 举报
回复
System.getProperty("user.dir ")
gdhqs 2008-12-04
  • 打赏
  • 举报
回复
String uploadDir = getServletContext().getRealPath("/") + "upload"; // 获得服务器的绝对路径
gdhqs 2008-12-04
  • 打赏
  • 举报
回复
String uploadDir = getServletContext().getRealPath("/") + "upload"; // 获得服务器的绝对路径
ruoye_2008 2008-12-04
  • 打赏
  • 举报
回复
这种我知道,是获取当前服务器所在的位置的,用这种方法是一种绝对路径,那么,除了这种外,有没有一个用相对路径的,就是仅相对于项目的路径

67,538

社区成员

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

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