Spring Boot上传图片到项目根路径文件夹下
如果想让 Spring Boot上传文件,上传到项目的根路径下(不是容器实例,这里很容易出错)Spring Boot上传图片到项目根路径文件夹下UploadUtils.java注意构建“图片文件夹路径”public class UploadUtils {// 项目根路径下的目录-- SpringBoot static 目录相当于是根路径下(Sp...
·
如果想让 Spring Boot上传文件,上传到项目的根路径下(不是容器实例,这里很容易出错)
Spring Boot上传图片到项目根路径文件夹下
UploadUtils.java
注意构建“图片文件夹路径”
public class UploadUtils {
// 项目根路径下的目录 -- SpringBoot static 目录相当于是根路径下(SpringBoot 默认)
public final static String IMG_PATH_PREFIX = "static/upload/imgs";
public static File getImgDirFile(){
// 构建上传文件的存放 "文件夹" 路径
String fileDirPath = new String("src/main/resources/" + IMG_PATH_PREFIX);
File fileDir = new File(fileDirPath);
if(!fileDir.exists()){
// 递归生成文件夹
fileDir.mkdirs();
}
return fileDir;
}
}
正确的
@ResponseBody
@RequestMapping("/upload")
public MsgTo upload(@RequestParam("imgFile")MultipartFile imgFile,HttpServletRequest request,HttpSession session){
MsgTo msg = new MsgTo();
if (imgFile.isEmpty()) {
// 设置错误状态码
msg.setCode(500);
msg.setMsg("上传失败,请选择文件");
return msg;
}
// 拿到文件名
String filename = imgFile.getOriginalFilename();
// 存放上传图片的文件夹
File fileDir = UploadUtils.getImgDirFile();
// 输出文件夹绝对路径 -- 这里的绝对路径是相当于当前项目的路径而不是“容器”路径
System.out.println(fileDir.getAbsolutePath());
try {
// 构建真实的文件路径
File newFile = new File(fileDir.getAbsolutePath() + File.separator + filename);
System.out.println(newFile.getAbsolutePath());
// 上传图片到 -》 “绝对路径”
imgFile.transferTo(newFile);
msg.setMsg("上传成功!");
} catch (IOException e) {
e.printStackTrace();
}
return msg;
}
错误示范
在构建图片File 对象时, File newFile = new File(fileDir, filename); 这种方式不行,会以容器实例的地址来上传,报错
![2019-04-11_104223](C:\Users\hechen\Desktop\文档总结\博客\data\2019-04-11_104223.png)@ResponseBody
@RequestMapping("/upload")
public MsgTo upload(@RequestParam("imgFile")MultipartFile imgFile,HttpServletRequest request,HttpSession session){
MsgTo msg = new MsgTo();
if (imgFile.isEmpty()) {
// 设置错误状态码
msg.setCode(500);
msg.setMsg("上传失败,请选择文件");
return msg;
}
// 拿到文件名
String filename = imgFile.getOriginalFilename();
// 存放上传图片的文件夹
File fileDir = UploadUtils.getImgDirFile();
// 输出文件夹绝对路径 -- 这里的绝对路径是相当于当前项目的路径而不是“容器”路径
System.out.println(fileDir.getAbsolutePath());
try {
// 这里改变图片构建方式
File newFile = new File(fileDir, filename);
System.out.println(newFile.getAbsolutePath());
// 上传图片到 -》 “绝对路径”
imgFile.transferTo(newFile);
msg.setMsg("上传成功!");
} catch (IOException e) {
e.printStackTrace();
}
return msg;
}
报错日志
更多推荐
已为社区贡献1条内容
所有评论(0)