@PostMapping(value = "/save",produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ApiOperation(value = "新增商品",notes = "save")
public JsonData save(@RequestPart("good") String good, @RequestPart("file") MultipartFile file){
return igoodservice.save(good,file);
}
@Override
public JsonData save(String good, MultipartFile file) {
User user = LoginInterceptor.threadLocal.get();
Good good1 = JSON.parseObject(good, Good.class);
// 判断上传的文件是否为空
if (file.isEmpty()) {
throw new MyException(400, "上传的图片不允许为空");
}
// 判断上传的文件大小是否超出限制值
if (file.getSize() > AVATAR_MAX_SIZE) { // getSize():返回文件的大小,以字节为单位
throw new MyException(400,"不允许上传超过" + (AVATAR_MAX_SIZE / 1024) + "KB的图片文件");
}
// 判断上传的文件类型是否超出限制
String contentType = file.getContentType();
if (!AVATAR_TYPES.contains(contentType)) {
throw new MyException(400,"不支持使用该类型的文件作为头像,允许的文件类型:" + AVATAR_TYPES);
}
//保存路径
String parent = "D:/images/shop/";
// 保存图片文件的文件夹
File dir = new File(parent);
if (!dir.exists()) {
dir.mkdirs();
}
//图片后缀
String suffix = "";
String originalFilename = file.getOriginalFilename();
int beginIndex = originalFilename.lastIndexOf(".");
if (beginIndex > 0) {
suffix = originalFilename.substring(beginIndex);
}
// 保存的图片文件的文件名
String fileName = CommonUtil.getStringNumRandom(12)+suffix;
// 创建文件对象,表示保存的头像文件
File dest = new File(dir, fileName);
// 执行保存头像文件
try {
file.transferTo(dest);
} catch (IllegalStateException e) {
// 抛出异常
throw new MyException(400,"图片状态异常,可能文件已被移动或删除");
} catch (IOException e) {
// 抛出异常
throw new MyException(400,"上传图片时读写错误,请稍后重新尝试");
}
good1.setPhoto(parent+fileName);
good1.setUId(user.getId());
good1.setState(0);
good1.setSales(0);
good1.setState(0);
dao.insert(good1);
return JsonData.buildMsg("新增成功!");
}