标签:http ons 封装 serve upload 设置 response 需要 boot
创建springboot项目
server: port: 8082 spring: application: name: upload-service servlet: multipart: max-file-size: 5MB # 限制文件上传的大小
需要注意的是,我们应该添加了限制文件大小的配置
编写controller需要知道4个内容:
@RestController @RequestMapping("upload") public class UploadController { @Autowired private UploadService uploadService; /** * 上传图片功能 * @param file * @return */ @PostMapping("image") public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file) { String url = this.uploadService.upload(file); if (StringUtils.isBlank(url)) { // url为空,证明上传失败 return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } // 返回200,并且携带url路径 return ResponseEntity.ok(url); } }
在上传文件过程中,我们需要对上传的内容进行校验:
文件大小在Spring的配置文件中设置,因此已经会被校验,我们不用管。
@Service public class UploadService { private static final Logger logger = LoggerFactory.getLogger(UploadController.class); // 支持的文件类型 private static final List<String> suffixes = Arrays.asList("image/png", "image/jpeg"); public String upload(MultipartFile file) { try { // 1、图片信息校验 // 1)校验文件类型 String type = file.getContentType(); if (!suffixes.contains(type)) { logger.info("上传失败,文件类型不匹配:{}", type); return null; } // 2)校验图片内容 BufferedImage image = ImageIO.read(file.getInputStream()); if (image == null) { logger.info("上传失败,文件内容不符合要求"); return null; } // 2、保存图片 // 2.1、生成保存目录 File dir = new File("D:\\heima\\upload"); if (!dir.exists()) { dir.mkdirs(); } // 2.2、保存图片 file.transferTo(new File(dir, file.getOriginalFilename())); // 2.3、拼接图片地址 String url = "http://image.leyou.com/upload/" + file.getOriginalFilename(); return url; } catch (Exception e) { return null; } } }
标签:http ons 封装 serve upload 设置 response 需要 boot
原文地址:https://www.cnblogs.com/coder-lzh/p/9747914.html