パッケージcn.gson.crm.controller; import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.util.ResourceUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartRequest; import org.springframework.web.servlet.ModelAndView; import cn.gson.crm.common.Base64Utils; import cn.gson.crm.common.Constants; import cn.gson.crm.common.UUIDUtil; import cn.gson.crm.model.dao.AttachmentDao; import cn.gson.crm.model.domain.Attachment; import cn.gson.crm.model.domain.Member; import cn.gson.crm.service.AttachmentService; /** * 描述:Ueditor整合spring boot实现方法 * 功能:图片的上传、预览,视屏的上传,附件的上传、预览, * 注:图片预览只针对 ".png", ".jpg", ".jpeg", ".gif", ".bmp" * 附件预览只针对 压缩文件,word文档,Excel文件,PPT,txt文件 * * @author fyh * */ @Controller @RequestMapping("/UEditor_jsp") public class UeditorController { @Autowired AttachmentService attachmentService; //附件上传的dao @Autowired AttachmentDao attachmentDao; @RequestMapping("/config") @ResponseBody public Object config(String action, HttpServletRequest request, HttpServletResponse response, HttpSession session , String scwalfile) throws Exception { Member member = (Member)session.getAttribute(Constants.SESSION_MEMBER_KEY); Map<String, Object> result = new HashMap<String, Object>(); if ("config".equals(action)) { ModelAndView mv = new ModelAndView("redirect:/UEditor_jsp/jsp/config.json"); return mv; } //单图上传与多图上传 else if("/attachment/uploadbd".equals(action)) { try { MultipartRequest multipartRequest = (MultipartRequest) request; MultipartFile file = multipartRequest.getFile("upfile"); String originalFilename = file.getOriginalFilename(); String fileType = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase(); byte[] bytes = IOUtils.toByteArray(file.getInputStream()); String vivofsImagePath = attachmentService.uploadImage(file, originalFilename, fileType, member); result.put("state", "SUCCESS"); result.put("name", originalFilename); result.put("original", originalFilename); result.put("size", bytes.length); result.put("type", fileType); result.put("url", vivofsImagePath); } catch (Exception e) { result.put("state", "FAILED"); } } //图片在线预览 else if ("/images/attachment/".equals(action)) { try { List<Map<String, String>> imgList = new ArrayList<Map<String, String>>(); Iterable<Attachment> findAll = attachmentDao.findAll(); for(Attachment attachmentList : findAll){ Map<String, String> map = new HashMap<>(); String filePath = "/" +attachmentList.getFilePath(); String aftername = filePath.substring(filePath.lastIndexOf(".")); if(aftername.equals(".png") || aftername.equals(".jpg") || aftername.equals(".jpeg") || aftername.equals(".gif") || aftername.equals(".bpm")){ map.put("url", filePath); imgList.add(map); } } int start = 0; int total = 10; result.put("state", "SUCCESS"); result.put("list", imgList); //图片路径列表 result.put("start", start); //图片开始位置 result.put("total", total); //图片总数 } catch (Exception e) { result.put("state", "FAILED"); } } //上传视频 else if("video".equals(action)) { try { MultipartRequest multipartRequest = (MultipartRequest) request; MultipartFile file = multipartRequest.getFile("upfile"); String originalFilename = file.getOriginalFilename(); String fileType = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase(); String videoPath = attachmentService.uploadVideo(file, originalFilename, fileType, member); result.put("state", "SUCCESS"); result.put("url", videoPath); result.put("type", fileType); result.put("original", originalFilename); } catch (Exception e) { result.put("state", "FAILED"); } } //上传附件,注附件在下载只有才可以浏览,初步尝试为Excel文件 else if("uploadfile".equals(action)) { try { MultipartRequest multipartRequest = (MultipartRequest) request; MultipartFile file = multipartRequest.getFile("upfile"); String originalFilename = file.getOriginalFilename(); String fileType = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase(); String uploadAttachment = attachmentService.uploadAttachment(file, originalFilename, fileType, member); result.put("state", "SUCCESS"); result.put("name", originalFilename); result.put("original", originalFilename); result.put("type", fileType); result.put("url", uploadAttachment); } catch (Exception e) { result.put("state", "FAILED"); } } //附件在线预览 else if("listfile".equals(action)) { try { List<Map<String, String>> fileList = new ArrayList<Map<String, String>>(); //查找到附件表中的所有数据 Iterable<Attachment> findAll = attachmentDao.findAll(); for(Attachment attachmentList : findAll){ Map<String, String> map = new HashMap<>(); String filePath = attachmentList.getFilePath(); String aftername = filePath.substring(filePath.lastIndexOf(".")); //附件预览展示页面文件所要满足的条件 if(aftername.equals(".docx") || aftername.equals(".xlsx") || aftername.equals(".doc") || aftername.equals(".pdf") || aftername.equals(".rar") || aftername.equals(".zip") || aftername.equals(".ppt") || aftername.equals(".pptx") || aftername.equals(".txt")){ map.put("url", filePath); fileList.add(map); } } int start = 0; int total = 10; result.put("state", "SUCCESS"); result.put("list", fileList); //图片路径列表 result.put("start", start); //图片开始位置 result.put("total", total); //图片总数 } catch (Exception e) { result.put("state", "FAILED"); } } return result; } } |