• application.yml
server: port: 8082 spring: application: name: upload servlet: multipart: max-file-size: 5MB
• uploadController.java
import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; /** * 文件上传 */ @Controller @RequestMapping("/upload") public class UploadController { @Autowired private UploadService uploadService; @PostMapping("/image") public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file) { String url = uploadService.uploadImage(file); return StringUtils.isBlank(url) ? ResponseEntity.badRequest().build() : ResponseEntity.status(HttpStatus.CREATED).body(url); } }
• uploadService.java
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; /** * 文件上传 */ @Service public class UploadServiceImpl implements UploadService { //支持的图片类型
private static final List<String> CONTENT_TYPE = Arrays.asList("image/gif", "image/jpeg","image/png"); //日志
private static final Logger LOGGER = LoggerFactory.getLogger(UploadService.class); @Override public String uploadImage(MultipartFile file) { String originalFilename = file.getOriginalFilename(); //建议文件类型
String contentType = file.getContentType(); if (!CONTENT_TYPE.contains(contentType)) { LOGGER.info("文件类型不合法:{}", originalFilename); return null; } try { //检验文件内容
BufferedImage read = ImageIO.read(file.getInputStream()); if (read == null) { LOGGER.info("文件内容不合法:{}", originalFilename); return null; } //保存文件
file.transferTo(new File("D:\\Code\\JavaCode\\leyou\\uploadImage\\" + originalFilename)); } catch (IOException e) { LOGGER.error("服务器内部错误->:{}", originalFilename); e.printStackTrace(); }
//返回图片路径 return "http://**.***.com/" + originalFilename; } }