package cn.wisenergy.chnmuseum.party.web.controller; import cn.wisenergy.chnmuseum.party.common.dfs.FastDFSUtils; import cn.wisenergy.chnmuseum.party.common.util.ImageUtil; import cn.wisenergy.chnmuseum.party.common.vo.PicUploadResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; /** * 图片上传 */ @RestController @RequestMapping("/pic") public class PicUploadController { private static final Logger log = LoggerFactory.getLogger(PicUploadController.class); @Value("${IMAGE_BASE_URL}") private String IMAGE_BASE_URL; // 允许上传的格式 private static final String[] IMAGE_TYPE = new String[] { ".bmp", ".jpg", ".jpeg", ".png" }; @RequestMapping(value = "/upload", method = RequestMethod.POST) public ResponseEntity<PicUploadResult> upload(@RequestParam(value = "bc_cover", required = true) MultipartFile uploadFile, HttpServletResponse response) throws Exception { // 校验文件扩展名 boolean isLegal = false; // for (String type : IMAGE_TYPE) { // if (StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(), type)) { // isLegal = true; // break; // } // } byte[] bytes = uploadFile.getBytes(); if (ImageUtil.isPicture(uploadFile.getOriginalFilename()) && ImageUtil.isImage(bytes) && ImageUtil.isImage1(bytes)) { isLegal = true; } else { isLegal = false; throw new RuntimeException("图片文件不合法"); } // 封装Result对象,并且将文件的byte数组放置到result对象中 PicUploadResult fileUploadResult = new PicUploadResult(); // 状态 fileUploadResult.setError(isLegal ? 0 : 1); // 文件新路径 String filePath = FastDFSUtils.uploadPic(bytes, uploadFile.getOriginalFilename(), uploadFile.getSize()); if (log.isDebugEnabled()) { log.debug("Pic file upload .[{}] to [{}] .", uploadFile.getOriginalFilename(), filePath); } String picUrl = IMAGE_BASE_URL + filePath; // fileUploadResult.setUrl(picUrl); // // 校验图片是否合法 // isLegal = false; // try { // BufferedImage image = ImageIO.read(new URL(picUrl)); // if (image != null) { // // fileUploadResult.setWidth(image.getWidth() + ""); // // fileUploadResult.setHeight(image.getHeight() + ""); // isLegal = true; // } // } catch (IOException e) { // log.error("check image is legal error! " + e.getMessage()); // } // isLegal = true; // // 状态 // fileUploadResult.setError(isLegal ? 0 : 1); if (!isLegal) { // 不合法,将磁盘上的文件删除 FastDFSUtils.deletePic(picUrl); } return ResponseEntity.status(HttpStatus.CREATED).body(fileUploadResult); } @RequestMapping(value = "/uploadFile", method = RequestMethod.POST) public ResponseEntity<PicUploadResult> uploadFile( @RequestParam(value = "bc_cover", required = true) MultipartFile uploadFile, HttpServletResponse response) throws Exception { // 封装Result对象,并且将文件的byte数组放置到result对象中 PicUploadResult fileUploadResult = new PicUploadResult(); if(uploadFile.getSize()/(1024*1024)>1024){ //50兆 log.error("附件大小超过50兆!请重新上传 " ); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); }; // 文件新路径 String filePath = FastDFSUtils.uploadPic(uploadFile.getBytes(), uploadFile.getOriginalFilename(), uploadFile.getSize()); if (log.isDebugEnabled()) { log.debug("Pic file upload .[{}] to [{}] .", uploadFile.getOriginalFilename(), filePath); } String picUrl = IMAGE_BASE_URL + filePath; fileUploadResult.setUrl(picUrl); return ResponseEntity.status(HttpStatus.CREATED).body(fileUploadResult); } }