文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
第一种常规犯错
前端使用get请求
,后端未使用注解
或注解为@PostMapping
或请求路径少/
或拦截器路径错误
第二种错误
mybatis字段名称与实体类不对应,使用自定义异常捕获,难以察觉.
以我的情况:
前端:
后端:
/**
* 更新歌单图片
*/
@PostMapping("/updateSongListPic")
@ResponseBody
public Object updateSongListPic(@RequestParam("file") MultipartFile photo, @RequestParam("id") int id) {
JSONObject jsonObject = new JSONObject();
if (photo.isEmpty()) {
jsonObject.put(Consts.CODE, 0);
jsonObject.put(Consts.MSG, "文件上传失败");
return jsonObject;
}
//获取上传的文件的文件名
String fileName = photo.getOriginalFilename();
//处理文件重名问题
//重名问题是java.io中写入同一文件默认覆盖原文件内容导致图片被覆盖.
//获取文件名后缀
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//将UUID作为文件名 uuid是32位随机数,几乎不可能会重复
fileName = UUID.randomUUID().toString() + suffixName;
//获取上传目标路径 File.separator 获取分隔符为了兼容 linux
String photoPath = System.getProperty("user.dir") + File.separator + "static" + File.separator
+ "songListImages";
File file = new File(photoPath);
//判断服务器是否存在该路径
if (!file.exists()) {
file.mkdirs();
}
//最终文件存放的地址
String finalPath = photoPath + File.separator + fileName;
//存储到数据库里的相对文件地址
String storePhotoPath = "/songListImages/" + fileName;
//实现上传功能
try {
log.info("hi, log..");
photo.transferTo(new File(finalPath));
SongList songList = new SongList();
songList.setId(id);
songList.setPicture(storePhotoPath);
boolean flag = songListService.update(songList);
if (flag) {
jsonObject.put(Consts.CODE, 1);
jsonObject.put(Consts.MSG, "文件上传成功");
return jsonObject;
}
jsonObject.put(Consts.CODE, 0);
jsonObject.put(Consts.MSG, "文件上传失败");
return jsonObject;
} catch (Exception e) {
jsonObject.put(Consts.CODE, 0);
jsonObject.put(Consts.MSG, "文件上传失败,原因是:" + e.getMessage());
} finally {
return jsonObject;
}
}
postman
debug
可以正常上传文件,但文件不显示.也就是说,可以正常进入代码中,不属于第一种常规错误
请注意自定义异常
IOException捕获的话前端会报错
Exception捕获的话前端会报错
后端报错
最后发现