JAVA后端MultipartFile实现文件上传和预览
时间: 2024-10-27 11:14:56 浏览: 47
在Java后端开发中,处理文件上传通常涉及到`MultipartFile`这个接口,它是由Spring框架提供的。当你需要用户上传文件到服务器时,前端会将文件封装成`MultipartFile`的对象并通过HTTP请求发送给后端。
**文件上传**:
1. 首先,在Java控制器方法中接收`MultipartFile`:
```java
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
// 检查文件是否为空
if (file.isEmpty()) {
return "Error: No file selected";
}
// 文件名、大小等验证
try {
// 将文件保存到服务器指定目录
String fileName = saveUploadedFile(file);
return "File uploaded successfully: " + fileName;
} catch (Exception e) {
return "Error uploading file: " + e.getMessage();
}
}
private String saveUploadedFile(MultipartFile file) throws IOException {
// 这里可以设置存储路径,比如使用UUID生成唯一名称
String filename = UUID.randomUUID().toString() + "." + file.getOriginalFilename().split("\\.")[(file.getOriginalFilename().indexOf(".") != -1) ? 1 : 0];
Path path = Paths.get("/path/to/upload/folder", filename);
Files.copy(file.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
return filename;
}
```
2. 确保处理完文件后关闭输入流以释放资源。
**文件预览**:
文件预览通常是前端的任务,后端只提供下载链接或基础信息。你可以提供一个API来获取文件的信息,如:
```java
@GetMapping("/preview")
public ResponseEntity<Resource> getFilePreview(@RequestParam("filename") String fileName) {
File file = new File("/path/to/upload/folder/" + fileName);
if (file.exists()) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.valueOf(file.getContentType()));
return ResponseEntity.ok()
.headers(headers)
.body(new FileSystemResource(file));
} else {
return ResponseEntity.notFound().build();
}
}
```
阅读全文