java大批量文件上传
时间: 2023-06-30 22:07:30 浏览: 83
Java大批量文件上传可以使用Apache Commons FileUpload。以下是一个简单的示例代码:
```java
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
@WebServlet("/upload")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 检查请求是否为multipart/form-data类型
if (!ServletFileUpload.isMultipartContent(request)) {
response.getWriter().println("Error: Form must have enctype=multipart/form-data.");
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return;
}
// 创建文件上传工厂和上传处理器
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// 解析上传请求
List<FileItem> items = upload.parseRequest(request);
// 处理上传的文件
for (FileItem item : items) {
if (!item.isFormField()) { // 如果是文件类型
String fileName = item.getName();
String root = getServletContext().getRealPath("/");
File path = new File(root + "/uploads");
if (!path.exists()) {
path.mkdirs();
}
File uploadedFile = new File(path + "/" + fileName);
item.write(uploadedFile);
}
}
// 返回上传成功的消息
response.getWriter().println("Upload successful!");
response.setStatus(HttpServletResponse.SC_OK);
} catch (Exception e) {
// 返回上传失败的消息
response.getWriter().println("Upload failed: " + e.getMessage());
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
}
}
```
在上面的示例中,我们使用Servlet 3.0的@MultipartConfig注解来指定这是一个文件上传的servlet。我们使用Apache Commons FileUpload来解析上传请求,并将文件保存在指定的目录中。当上传完成后,我们向客户端发送一个成功或失败的消息。
在JSP页面中,我们可以使用表单来上传文件:
```html
<form method="post" action="upload" enctype="multipart/form-data">
<input type="file" name="file1"><br>
<input type="file" name="file2"><br>
<input type="submit" value="Upload">
</form>
```
在上面的示例中,我们使用input元素的type属性为file来创建文件上传字段。当用户选择一个文件后,它的内容将被包含在POST请求中,并发送到我们的servlet。
阅读全文