package com.ycl.jxkg.controller.admin; import com.ycl.jxkg.base.BaseApiController; import com.ycl.jxkg.base.Result; import com.ycl.jxkg.config.property.SystemConfig; import com.ycl.jxkg.service.FileUpload; import com.ycl.jxkg.service.UserService; import com.ycl.jxkg.vo.admin.file.UeditorConfigVO; import com.ycl.jxkg.vo.admin.file.UploadResultVO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; @RequestMapping("/api/admin/upload") @RestController("AdminUploadController") public class UploadController extends BaseApiController { private final FileUpload fileUpload; private final SystemConfig systemConfig; private static final Logger logger = LoggerFactory.getLogger(UploadController.class); private static final String IMAGE_UPLOAD = "imgUpload"; private static final String IMAGE_UPLOAD_FILE = "upFile"; private final UserService userService; @Autowired public UploadController(FileUpload fileUpload, SystemConfig systemConfig, UserService userService) { this.fileUpload = fileUpload; this.systemConfig = systemConfig; this.userService = userService; } @ResponseBody @RequestMapping("/configAndUpload") public Object upload(HttpServletRequest request, HttpServletResponse response) { String action = request.getParameter("action"); if (action.equals(IMAGE_UPLOAD)) { try { MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartHttpServletRequest.getFile(IMAGE_UPLOAD_FILE); long attachSize = multipartFile.getSize(); String imgName = multipartFile.getOriginalFilename(); String filePath; try (InputStream inputStream = multipartFile.getInputStream()) { filePath = fileUpload.uploadFile(inputStream, attachSize, imgName); } String imageType = imgName.substring(imgName.lastIndexOf(".")); UploadResultVO uploadResultVO = new UploadResultVO(); uploadResultVO.setOriginal(imgName); uploadResultVO.setName(imgName); uploadResultVO.setUrl(filePath); uploadResultVO.setSize(multipartFile.getSize()); uploadResultVO.setType(imageType); uploadResultVO.setState("SUCCESS"); return uploadResultVO; } catch (IOException e) { logger.error(e.getMessage(), e); } } else { UeditorConfigVO ueditorConfigVO = new UeditorConfigVO(); ueditorConfigVO.setImageActionName(IMAGE_UPLOAD); ueditorConfigVO.setImageFieldName(IMAGE_UPLOAD_FILE); ueditorConfigVO.setImageMaxSize(2048000L); ueditorConfigVO.setImageAllowFiles(Arrays.asList(".png", ".jpg", ".jpeg", ".gif", ".bmp")); ueditorConfigVO.setImageCompressEnable(true); ueditorConfigVO.setImageCompressBorder(1600); ueditorConfigVO.setImageInsertAlign("none"); ueditorConfigVO.setImageUrlPrefix(""); ueditorConfigVO.setImagePathFormat(""); return ueditorConfigVO; } return null; } @RequestMapping("/image") @ResponseBody public Result questionUploadAndReadExcel(HttpServletRequest request) { MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartHttpServletRequest.getFile("file"); long attachSize = multipartFile.getSize(); String imgName = multipartFile.getOriginalFilename(); try (InputStream inputStream = multipartFile.getInputStream()) { String filePath = fileUpload.uploadFile(inputStream, attachSize, imgName); userService.changePicture(getCurrentUser(), filePath); return Result.ok(filePath); } catch (IOException e) { return Result.fail(2, e.getMessage()); } } }