怎么将jsp表单提交的文件上传到javaweb项目下的upload文件夹,而不是项目在本地的临时目录.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\springmvc1\upload
时间: 2023-07-06 13:43:02 浏览: 124
在JSP表单中上传文件时,可以使用`<form>`元素中的`enctype`属性将表单编码类型设置为"multipart/form-data",然后在服务器端获取文件并将其保存到指定的位置。
假设你的上传文件的JSP页面中的表单中包含一个名为"file"的文件上传控件,上传文件的处理程序在一个名为"uploadServlet"的Servlet中,你可以在Servlet中使用以下代码将上传的文件保存到你的Java Web项目中的"upload"文件夹中。
```java
// 获取上传文件的保存目录,这里保存在Web应用程序的upload目录下
String savePath = request.getServletContext().getRealPath("/upload");
// 创建文件保存目录(如果不存在)
File file = new File(savePath);
if (!file.exists() && !file.isDirectory()) {
file.mkdirs();
}
// 获取上传的文件
Part part = request.getPart("file");
String fileName = getFileName(part);
// 将上传的文件保存到指定目录
part.write(savePath + File.separator + fileName);
```
其中,`getFileName`方法用于获取上传文件的文件名,具体实现如下:
```java
private String getFileName(Part part) {
String contentDispositionHeader = part.getHeader("content-disposition");
String[] elements = contentDispositionHeader.split(";");
for (String element : elements) {
if (element.trim().startsWith("filename")) {
return element.substring(element.indexOf('=') + 1).trim().replace("\"", "");
}
}
return null;
}
```
需要注意的是,上述代码中的`request.getServletContext().getRealPath("/upload")`方法获取的是Web应用程序中的"upload"文件夹的真实路径,而不是项目在本地的临时目录。因此,上传的文件将被保存在Java Web项目中的"upload"文件夹中。
阅读全文