最近在学习springboot读入文件操作时,出现了文件读取拒绝访问的情况,google search了半天得到的结果大部分都是输入流问题,尝试了半天还是没有解决,我的源代码为:
@PostMapping("upload")
public String upload(MultipartFile file) throws IOException {
InputStream inputStream = file.getInputStream();
file.transferTo(new File("C:\\aaa"+ inputStream));
return "上传成功";
}
问题:
路径拼接错误:直接将 InputStream
对象拼接到路径字符串中,这会调用 toString()
方法,而返回的并不是有效的文件名。
文件操作不当:transferTo()
方法需要正确构造的文件路径,才能将文件保存到目标位置。
改进后的代码:
@PostMapping("upload")
public String upload(@RequestParam("file") MultipartFile file) throws IOException {
// 定义目标目录
String targetDirectory = "C:\\aaa\\";
// 确保目标目录存在
File directory = new File(targetDirectory);
if (!directory.exists()) {
directory.mkdirs(); // 如果不存在则创建目录
}
// 获取文件的原始名称
String originalFilename = file.getOriginalFilename();
if (originalFilename == null || originalFilename.isEmpty()) {
return "文件名无效";
}
// 拼接目标文件路径
String targetFilePath = targetDirectory + originalFilename;
// 将上传的文件保存到目标位置
file.transferTo(new File(targetFilePath));
return "上传成功";
}