From 37f2e4e68c0d55e094981fa478fc198b907f87dc Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期六, 20 七月 2024 16:30:13 +0800 Subject: [PATCH] 代码提交 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java | 220 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 165 insertions(+), 55 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index cec5006..fc69251 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -1,35 +1,50 @@ package com.ruoyi.web.controller.common; -import java.util.ArrayList; -import java.util.List; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.PhotoEnum; +import com.ruoyi.common.enums.RadioEnum; +import com.ruoyi.common.enums.VadioEnum; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.framework.config.ServerConfig; +import com.smartor.domain.HtmlContentVO; +import org.apache.poi.hwpf.HWPFDocument; +import org.apache.poi.hwpf.converter.PicturesManager; +import org.apache.poi.hwpf.converter.WordToHtmlConverter; +import org.apache.poi.hwpf.usermodel.PictureType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.*; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; /** * 閫氱敤璇锋眰澶勭悊 - * + * * @author ruoyi */ @RestController @RequestMapping("/common") -public class CommonController -{ +public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); @Autowired @@ -39,17 +54,14 @@ /** * 閫氱敤涓嬭浇璇锋眰 - * + * * @param fileName 鏂囦欢鍚嶇О - * @param delete 鏄惁鍒犻櫎 + * @param delete 鏄惁鍒犻櫎 */ @GetMapping("/download") - public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) - { - try - { - if (!FileUtils.checkAllowDownload(fileName)) - { + public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) { + try { + if (!FileUtils.checkAllowDownload(fileName)) { throw new Exception(StringUtils.format("鏂囦欢鍚嶇О({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", fileName)); } String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); @@ -58,14 +70,70 @@ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.writeBytes(filePath, response.getOutputStream()); - if (delete) - { + if (delete) { FileUtils.deleteFile(filePath); } - } - catch (Exception e) - { + } catch (Exception e) { log.error("涓嬭浇鏂囦欢澶辫触", e); + } + } + + /** + * 鍒嗙被涓婁紶璇锋眰 + */ + @PostMapping("/uploadSort") + public AjaxResult uploadFileSort(MultipartFile file) { + try { + // 涓婁紶鏂囦欢璺緞 + String filePath = RuoYiConfig.getUploadPath(); + String originalFilename = file.getOriginalFilename().split("\\.", 2)[1]; + if (VadioEnum.getDescByCode(originalFilename)) { + filePath = filePath + "/vadio"; + } else if (RadioEnum.getDescByCode(originalFilename)) { + filePath = filePath + "/radio"; + } else if (PhotoEnum.getDescByCode(originalFilename)) { + filePath = filePath + "/photo"; + } else { + filePath = filePath + "/file"; + } + // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О + String fileName = FileUploadUtils.uploadSort(filePath, file); + String url = serverConfig.getUrl() + fileName; + AjaxResult ajax = AjaxResult.success(); + ajax.put("url", url); + ajax.put("fileName", fileName); + ajax.put("newFileName", FileUtils.getName(fileName)); + ajax.put("originalFilename", file.getOriginalFilename()); + return ajax; + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + + /** + * 涓婁紶骞惰浆鎴恏tml璇锋眰 + */ + @PostMapping("/uploadShow") + public AjaxResult uploadFileShow(MultipartFile file) { + try { + // 涓婁紶鏂囦欢璺緞 + String filePath = RuoYiConfig.getUploadPath(); + String originalFilename = file.getOriginalFilename().split("\\.", 2)[1]; + filePath = filePath + "/show/" + file.getOriginalFilename().split("\\.", 2)[0]; + // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О + String fileName = FileUploadUtils.uploadSort(filePath, file); + //灏唚ord杞垚html + convertDocToHtml(filePath + "\\" + file.getOriginalFilename(), filePath + "\\" + file.getOriginalFilename().split("\\.", 2)[0] + ".html"); + + String url = serverConfig.getUrl() + fileName.replaceAll("\\.[^.]*$", ".html"); + AjaxResult ajax = AjaxResult.success(); + ajax.put("url", url); + ajax.put("fileName", fileName); + ajax.put("newFileName", FileUtils.getName(fileName)); + ajax.put("originalFilename", file.getOriginalFilename()); + return ajax; + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); } } @@ -73,10 +141,8 @@ * 閫氱敤涓婁紶璇锋眰锛堝崟涓級 */ @PostMapping("/upload") - public AjaxResult uploadFile(MultipartFile file) throws Exception - { - try - { + public AjaxResult uploadFile(MultipartFile file) { + try { // 涓婁紶鏂囦欢璺緞 String filePath = RuoYiConfig.getUploadPath(); // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О @@ -88,9 +154,7 @@ ajax.put("newFileName", FileUtils.getName(fileName)); ajax.put("originalFilename", file.getOriginalFilename()); return ajax; - } - catch (Exception e) - { + } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } @@ -99,18 +163,15 @@ * 閫氱敤涓婁紶璇锋眰锛堝涓級 */ @PostMapping("/uploads") - public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception - { - try - { + public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception { + try { // 涓婁紶鏂囦欢璺緞 String filePath = RuoYiConfig.getUploadPath(); List<String> urls = new ArrayList<String>(); List<String> fileNames = new ArrayList<String>(); List<String> newFileNames = new ArrayList<String>(); List<String> originalFilenames = new ArrayList<String>(); - for (MultipartFile file : files) - { + for (MultipartFile file : files) { // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О String fileName = FileUploadUtils.upload(filePath, file); String url = serverConfig.getUrl() + fileName; @@ -125,9 +186,7 @@ ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); return ajax; - } - catch (Exception e) - { + } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } @@ -136,13 +195,9 @@ * 鏈湴璧勬簮閫氱敤涓嬭浇 */ @GetMapping("/download/resource") - public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) - throws Exception - { - try - { - if (!FileUtils.checkAllowDownload(resource)) - { + public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) throws Exception { + try { + if (!FileUtils.checkAllowDownload(resource)) { throw new Exception(StringUtils.format("璧勬簮鏂囦欢({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", resource)); } // 鏈湴璧勬簮璺緞 @@ -154,10 +209,65 @@ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, downloadName); FileUtils.writeBytes(downloadPath, response.getOutputStream()); - } - catch (Exception e) - { + } catch (Exception e) { log.error("涓嬭浇鏂囦欢澶辫触", e); } } + + /** + * @param + * @return + */ + @PostMapping("/htmlContent") + public AjaxResult htmlContent(@RequestBody HtmlContentVO htmlContentVO) { + // 鑾峰彇鏂囦欢鐨勫師濮嬪悕绉� + String fileName = htmlContentVO.getFileName(); + // 灏嗘枃浠朵繚瀛樺埌鎸囧畾鐩綍 + File outputFile = new File(RuoYiConfig.getUploadPath() + "/show/" + fileName.split("\\.", 2)[0] + "/" + fileName); + try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8"))) { + writer.write(htmlContentVO.getContent()); + } catch (IOException e) { + e.printStackTrace(); + } + String url = serverConfig.getUrl() + "/profile/upload/show/" + fileName.split("\\.", 2)[0] + "/" + fileName; + return AjaxResult.success(url); + } + + + public static void convertDocToHtml(String docFilePath, String outputHtmlFilePath) throws TransformerException, IOException, ParserConfigurationException { + + InputStream inputStream = new FileInputStream(docFilePath); + HWPFDocument document = new HWPFDocument(inputStream); + org.w3c.dom.Document htmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); + WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(htmlDoc); + + wordToHtmlConverter.setPicturesManager(new PicturesManager() { + @Override + public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) { + String base64 = Base64.getEncoder().encodeToString(content); + String src = "data:" + pictureType.getMime() + ";base64," + base64; + return src; + } + }); + try { + wordToHtmlConverter.processDocument(document); + } catch (Exception e) { + e.getMessage(); + } + TransformerFactory tf = TransformerFactory.newInstance(); + Transformer transformer = tf.newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + transformer.setOutputProperty(OutputKeys.METHOD, "html"); + transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); + + DOMSource domSource = new DOMSource(wordToHtmlConverter.getDocument()); + StreamResult streamResult = new StreamResult(new File(outputHtmlFilePath)); + transformer.transform(domSource, streamResult); + + System.out.println("word杞琱tml鎴愬姛"); + + } + + } -- Gitblit v1.9.3