java 图片如何上传
图片上传方法
使用Java上传图片可以通过多种方式实现,常见的有基于Servlet的文件上传、Spring框架的MultipartFile以及第三方库如Apache Commons FileUpload。
使用Servlet实现文件上传
在Servlet 3.0及以上版本中,可以通过@MultipartConfig注解实现文件上传。创建一个Servlet类并添加注解,通过request.getPart()方法获取文件。

@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 = filePart.getSubmittedFileName();
InputStream fileContent = filePart.getInputStream();
// 保存文件到指定目录
Files.copy(fileContent, Paths.get("/path/to/save/" + fileName));
response.getWriter().print("Upload successful");
}
}
使用Spring Boot实现文件上传
在Spring Boot中,可以通过MultipartFile接收上传的文件。创建一个Controller类并定义文件上传接口。

@RestController
public class FileUploadController {
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
if (file.isEmpty()) {
return "File is empty";
}
try {
byte[] bytes = file.getBytes();
Path path = Paths.get("/path/to/save/" + file.getOriginalFilename());
Files.write(path, bytes);
return "Upload successful";
} catch (IOException e) {
return "Upload failed: " + e.getMessage();
}
}
}
使用Apache Commons FileUpload
对于非Servlet 3.0环境,可以使用Apache Commons FileUpload库处理文件上传。需要添加依赖并编写解析代码。
// Maven依赖
// <dependency>
// <groupId>commons-fileupload</groupId>
// <artifactId>commons-fileupload</artifactId>
// <version>1.4</version>
// </dependency>
// 代码示例
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
String fileName = item.getName();
File uploadedFile = new File("/path/to/save/" + fileName);
item.write(uploadedFile);
}
}
前端表单配置
无论使用哪种后端方法,前端表单需要设置enctype="multipart/form-data"。
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">Upload</button>
</form>
注意事项
- 确保上传目录有写入权限。
- 限制上传文件大小,避免服务器资源耗尽。
- 对文件名进行校验,防止路径遍历攻击。
- 考虑使用随机文件名或UUID避免文件名冲突。






