java 如何上传文件
上传文件的方法
在 Java 中上传文件可以通过多种方式实现,以下是几种常见的方法:
使用 Servlet 处理文件上传
在基于 Servlet 的 Web 应用中,可以通过 MultipartConfig 注解和 Part 接口处理文件上传:
@WebServlet("/upload")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Part filePart = request.getPart("file");
String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString();
InputStream fileContent = filePart.getInputStream();
Files.copy(fileContent, Paths.get("/path/to/save/" + fileName));
response.getWriter().print("File uploaded successfully");
}
}
使用 Apache Commons FileUpload

对于较旧的 Servlet 版本,可以使用 Apache Commons FileUpload 库:
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
String fileName = new File(item.getName()).getName();
item.write(new File("/path/to/save/" + fileName));
}
}
使用 Spring Boot 处理文件上传

在 Spring Boot 应用中,可以简洁地处理文件上传:
@RestController
public class FileUploadController {
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
String fileName = file.getOriginalFilename();
Path path = Paths.get("/path/to/save/" + fileName);
Files.copy(file.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
return "File uploaded successfully";
}
}
使用 HttpClient 发送文件
如果需要通过客户端上传文件,可以使用 HttpClient:
CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost("http://example.com/upload");
FileBody fileBody = new FileBody(new File("/path/to/file"));
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addPart("file", fileBody);
post.setEntity(builder.build());
CloseableHttpResponse response = client.execute(post);
client.close();
注意事项
- 确保目标目录有写入权限
- 处理文件上传时应考虑文件大小限制
- 对上传文件进行安全验证,防止恶意文件上传
- 在生产环境中考虑使用异步处理或分块上传大文件
以上方法覆盖了从基础 Servlet 到现代框架的文件上传实现,可以根据具体需求选择适合的方式。






