MultipartFile获取文件地址
时间: 2025-02-12 09:15:32 浏览: 57
### 使用 `MultipartFile` 获取上传文件的存储路径
在 Spring Boot 中处理文件上传时,`MultipartFile` 主要用于接收客户端发送过来的文件数据。为了保存这些文件并获取其存储路径,可以按照如下方式操作:
#### 控制器方法定义
创建控制器来处理文件上传请求,并指定目标位置以保存接收到的文件。
```java
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.UUID;
@RestController
public class FileUploadController {
private static final String UPLOAD_DIR = "src/main/resources/cache/";
@PostMapping("/test/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
try {
// 构建唯一的文件名防止覆盖已有文件
String originalFilename = file.getOriginalFilename();
String extension = "";
if (originalFilename != null && originalFilename.contains(".")) {
extension = "." + originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
}
Path copyLocation = Paths.get(UPLOAD_DIR);
Files.createDirectories(copyLocation); // 创建目录如果不存在
byte[] bytes = file.getBytes();
Path path = copyLocation.resolve(UUID.randomUUID().toString() + extension);
Files.write(path, bytes);
return "You successfully uploaded -> " + path.toAbsolutePath(); // 返回绝对路径给前端
} catch (Exception e) {
throw new RuntimeException("Could not store the file. Error: " + e.getMessage());
}
}
}
```
此代码片段展示了如何设置一个 RESTful API 来接受来自表单的数据流形式提交的文件(`@RequestParam("file")`),并通过 Java NIO 的工具类将其写入服务器上的特定位置[^1]。
注意,在实际应用中应当考虑安全性措施如验证 MIME 类型、大小限制以及清理临时文件等;此外还需要确保应用程序有足够的权限访问所选的目标文件夹。
对于想要把文件存放到项目的 resources 下自定义子目录的情况,则可以通过修改上述代码中的 `UPLOAD_DIR` 变量指向该路径即可实现[^2]。
最后,配合前端框架比如 Vue.js 和 Element UI 组件库完成整个流程,其中包含了发起 HTTP 请求的部分[^3]。
阅读全文
相关推荐














