j2ee 文件上传
时间: 2023-09-01 08:08:31 浏览: 97
j2ee upload file
在J2EE中,文件上传的常用方式是使用Servlet API提供的MultipartConfig注解和Part接口。具体实现步骤如下:
1. 在Servlet类上添加MultipartConfig注解,指定文件上传的配置信息,如上传文件的大小限制等。
2. 在Servlet的doPost方法中,通过HttpServletRequest的getParts方法获取上传的文件。
3. 遍历获取到的Part集合,通过Part的getInputStream方法获取上传文件的InputStream流,然后将其保存到服务器端。
以下是一个简单的文件上传Servlet代码示例:
```java
@WebServlet("/upload")
@MultipartConfig(fileSizeThreshold = 1024 * 1024 * 2, // 2MB
maxFileSize = 1024 * 1024 * 10, // 10MB
maxRequestSize = 1024 * 1024 * 50) // 50MB
public class FileUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
for (Part part : request.getParts()) {
String fileName = extractFileName(part);
if (fileName != null && !fileName.isEmpty()) {
part.write(getUploadPath() + File.separator + fileName);
}
}
response.sendRedirect(request.getContextPath() + "/success.jsp");
}
private String extractFileName(Part part) {
String contentDisp = part.getHeader("content-disposition");
String[] tokens = contentDisp.split(";");
for (String token : tokens) {
if (token.trim().startsWith("filename")) {
return token.substring(token.indexOf("=") + 2, token.length()-1);
}
}
return null;
}
private String getUploadPath() {
return getServletContext().getRealPath("") + File.separator + "uploads";
}
}
```
这个Servlet可以接受多个文件上传,最大限制为50MB。在doPost方法中,遍历获取到的Part集合,将每个上传文件保存到服务器端的固定目录下。其中,extractFileName方法用于从请求头中获取上传文件的文件名,getUploadPath方法用于获取服务端保存文件的目录路径。最后,重定向到上传成功的页面。
需要注意的是,在使用MultipartConfig注解时,需要在web.xml文件中添加以下配置:
```xml
<web-app>
<multipart-config>
<max-file-size>52428800</max-file-size> <!-- 50MB -->
<max-request-size>104857600</max-request-size> <!-- 100MB -->
<file-size-threshold>0</file-size-threshold>
</multipart-config>
</web-app>
```
这个配置文件用于指定上传文件的大小限制。其中,max-file-size表示单个文件的最大大小,max-request-size表示所有上传文件的最大总大小,file-size-threshold表示上传文件的缓存大小。
阅读全文