java如何获取jsp页面上传的文件路径

2024-12-25 07:00:20
推荐回答(5个)
回答1:

java文件中获得路径
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:

1、获取上传的文件路径,这个还真没试过。百度了一下,网友们的意见是:浏览器版本太高,从安全角度,禁止获取全文件路径,你可以换低版本浏览器试试,不保证正确。 有结果希望告知一下

2、一般文件上传是获取文件流,然后本地new出来保存在服务器上。

回答3:

楼主:用基础的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 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" 表明上传的是文件么


回答4:

使用FormFile这个类
定义一个FormBean
public class TestForm{
FormFile file;
private void setFile(FormFile file){
this.file = file;

}
public FormFile getFile(){
return file;
}
}
jsp页面

ActionBean
方法中这样写
TestForm tForm = (TestForm)form;// 获取表单
FormFile file = bForm.getFile();
file.getFilePath(); // 获取文件路径

回答5:

正如一楼所说,浏览器版本太高,从安全角度,禁止获取全文件路径,你可以换低版本浏览器试试,不保证正确,但是你可以获取到自己上传到的服务器的文件的全路径