file.transferTo(new File(path)相对路径保存图片
时间: 2023-10-27 18:07:00 浏览: 210
如果你想使用相对路径来保存上传的图片,可以按照以下步骤操作:
1. 获取项目的根路径
可以使用如下代码获取当前项目的根路径:
```
String rootPath = request.getSession().getServletContext().getRealPath("/");
```
2. 创建存储图片的目录
在项目的根路径下创建一个存储图片的目录,比如 `upload`。
```
String uploadDirPath = rootPath + "upload/";
File uploadDir = new File(uploadDirPath);
if (!uploadDir.exists()) {
uploadDir.mkdirs();
}
```
3. 获取上传的文件名和文件扩展名
通过 `multipartFile.getOriginalFilename()` 方法获取上传的文件名,再通过 `FilenameUtils.getExtension()` 方法获取文件扩展名。
```
String originalFilename = multipartFile.getOriginalFilename();
String fileExtension = FilenameUtils.getExtension(originalFilename);
```
4. 创建存储文件的路径,并保存文件
将文件保存到 `upload` 目录下,文件名可以使用 UUID 来生成,这样可以避免文件名冲突。
```
String fileName = UUID.randomUUID().toString() + "." + fileExtension;
String filePath = uploadDirPath + fileName;
File file = new File(filePath);
multipartFile.transferTo(file);
```
完整的代码如下:
```
@RequestMapping("/upload")
public String upload(@RequestParam("file") MultipartFile multipartFile, HttpServletRequest request) throws IOException {
String rootPath = request.getSession().getServletContext().getRealPath("/");
String uploadDirPath = rootPath + "upload/";
File uploadDir = new File(uploadDirPath);
if (!uploadDir.exists()) {
uploadDir.mkdirs();
}
String originalFilename = multipartFile.getOriginalFilename();
String fileExtension = FilenameUtils.getExtension(originalFilename);
String fileName = UUID.randomUUID().toString() + "." + fileExtension;
String filePath = uploadDirPath + fileName;
File file = new File(filePath);
multipartFile.transferTo(file);
return "上传成功!";
}
```
阅读全文