servlet多文件上传
时间: 2023-09-02 21:09:46 浏览: 135
基于servlet的多文件上传
5星 · 资源好评率100%
在Servlet中实现多文件上传需要以下步骤:
1. 在HTML表单中设置enctype属性为"multipart/form-data",并且设置method为"POST"。
2. 在Servlet中获取HttpServletRequest对象,并通过该对象获取上传的文件信息。
3. 遍历HttpServletRequest对象中的文件信息,并将每个文件保存到服务器本地磁盘。
以下是一个示例Servlet代码:
```java
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// 判断上传表单是否为multipart/form-data类型
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet upload</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Invalid request type</h1>");
out.println("</body>");
out.println("</html>");
return;
}
// 创建一个FileItemFactory对象
FileItemFactory factory = new DiskFileItemFactory();
// 创建ServletFileUpload对象
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// 解析上传表单
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
// 判断是否为文件域
if (!item.isFormField()) {
// 获取上传文件名称
String fileName = item.getName();
// 创建一个文件对象
File file = new File("c:/uploads/" + fileName);
// 保存上传文件到本地磁盘
item.write(file);
}
}
// 显示上传成功页面
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet upload</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Upload successful</h1>");
out.println("</body>");
out.println("</html>");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在上面的示例中,使用了Apache Commons FileUpload API来解析上传的表单数据。这个API提供了一种方便、可靠、高效的方式来处理文件上传。
阅读全文