用java写一个多文件上传接口
时间: 2024-01-04 14:04:09 浏览: 25
好的,以下是一个基于Java的多文件上传接口的示例代码:
```java
import java.io.File;
import java.io.IOException;
import java.util.List;
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 javax.servlet.http.Part;
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
// 获取上传的文件列表
List<Part> parts = (List<Part>) request.getParts();
// 遍历文件列表,将每个文件保存到服务器
for (Part part : parts) {
String fileName = extractFileName(part);
String filePath = "D:/uploads/" + fileName;
part.write(filePath);
}
response.getWriter().print("文件上传成功!");
}
// 从Part中提取文件名
private String extractFileName(Part part) {
String contentDisp = part.getHeader("content-disposition");
String[] items = contentDisp.split(";");
for (String item : items) {
if (item.trim().startsWith("filename")) {
return item.substring(item.indexOf("=") + 2, item.length() - 1);
}
}
return "";
}
}
```
在上面的示例代码中,我们使用了Java Servlet 3.0中新增的@MultipartConfig注解来支持文件上传。同时,我们还通过request.getParts()方法获取了上传的文件列表,然后遍历每个文件,将其保存到指定的目录中。
请注意,这里的文件上传路径是"D:/uploads/",需要根据实际情况修改。同时,由于文件上传可能会占用较大的服务器资源,建议在实际应用中加入一些限制条件,例如限制上传文件大小、文件类型、同时上传的文件数量等。