java如何获取jsp页面上传的文件路径 20
<form action="AA.do?method=yktAdd" method="post" >
<input type='text' name='textfield' id='textfield' class='txt' />
<input type='button' class='btn' value='浏览...' />
<input type="file" name="excel" class="file" id="fileField" size="28" onchange="document.getElementById('textfield').value=this.value" />
<input type="submit" name="submit" class="btn" value="添加" />
</form>
后台:
public ActionForward yktAdd(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String path=request.getParameter("excel");
System.out.println(path);
return mapping.findForward("yktadd");
}
程序得到的结果:XXX.xls
我想获取的结果是:D:\XXX.xls 这种全路径
只需要一个路径就行了,但是查了好多资料,都不成功,求大神解救!!!!!! 展开
推荐于2016-08-04 · 知道合伙人数码行家
Thread.currentThread().getContextClassLoader().getResource("") //获得资源文件(.class文件)所在路径
ClassLoader.getSystemResource("")
Class_Name.class.getClassLoader().getResource("")
Class_Name.class .getResource("/")
Class_Name.class .getResource("") // 获得当前类所在路径
System.getProperty("user.dir") // 获得项目根目录的绝对路径
System.getProperty("java.class.path") //得到类路径和包路径
打印输出依次如下:
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/com/xml/imp/
F:\work_litao\uri_test
F:\work_litao\uri_test\WebContent\WEB-INF\classes;F:\work_litao\uri_test\WebContent\WEB-INF\lib\dom4j.jar
2、 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径 :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
3.1 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径 :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
3、Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getServletPath();
文件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI())
webapp路径:request.getSession().getServletContext().getRealPath("/")
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
(ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)
2、一般文件上传是获取文件流,然后本地new出来保存在服务器上。
楼主:用基础的java我不知道怎么实现。但是但第三方jar包完全可以。而且上传文件方便。
代码给你:
private ServletConfig config;
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
this.config = config;
}
// TODO Auto-generated method stub
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("utf-8");
String serverPath = config.getServletContext().getRealPath("/")
.replace("\\", "/");
try {
List<FileItem> items = upload.parseRequest(req);
for (FileItem item : items) {
if (!item.isFormField()) {
String filedName = item.getName();
System.out.println(filedName);//这个名称就是全路径 下面是保存到服务器指定路径。
// 获取文件后缀
String ext = filedName
.substring(filedName.lastIndexOf("."));
String filexx = UUID.randomUUID().toString();
String url = serverPath + "noteimage/" + filexx + ext;
String url1 = "noteimage/" + filexx + ext;
// 保存到指定路径
item.write(new File(url));
req.setAttribute("imageurl", url);
resp.getWriter().write(url1);
}
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
另外上传文件的form 不得写上encType="multipart/form-data" 表明上传的是文件么
定义一个FormBean
public class TestForm{
FormFile file;
private void setFile(FormFile file){
this.file = file;
}
public FormFile getFile(){
return file;
}
}
jsp页面
<input type="file" name="file">
ActionBean
方法中这样写
TestForm tForm = (TestForm)form;// 获取表单
FormFile file = bForm.getFile();
file.getFilePath(); // 获取文件路径
按照你的方法获取不了,什么情况。你本机试过可以获取吗