123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package cn.keking.web.controller;
- import cn.keking.config.ConfigConstants;
- import cn.keking.model.FileAttribute;
- import cn.keking.service.FilePreview;
- import cn.keking.service.FilePreviewFactory;
- import cn.keking.service.cache.CacheService;
- import cn.keking.utils.DownloadUtils;
- import cn.keking.utils.FileUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.ResponseBody;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.*;
- import java.util.Arrays;
- import java.util.List;
- /**
- * @author yudian-it
- */
- @Controller
- public class OnlinePreviewController {
- private final Logger logger = LoggerFactory.getLogger(OnlinePreviewController.class);
- private final FilePreviewFactory previewFactory;
- private final CacheService cacheService;
- private final FileUtils fileUtils;
- private final DownloadUtils downloadUtils;
- public OnlinePreviewController(FilePreviewFactory filePreviewFactory,
- FileUtils fileUtils,
- CacheService cacheService,
- DownloadUtils downloadUtils) {
- this.previewFactory = filePreviewFactory;
- this.fileUtils = fileUtils;
- this.cacheService = cacheService;
- this.downloadUtils = downloadUtils;
- }
- @RequestMapping(value = "/onlinePreview", method = RequestMethod.GET)
- public String onlinePreview(String url, Model model, HttpServletRequest req) {
- FileAttribute fileAttribute = fileUtils.getFileAttribute(url);
- req.setAttribute("fileKey", req.getParameter("fileKey"));
- model.addAttribute("pdfDownloadDisable", ConfigConstants.getPdfDownloadDisable());
- model.addAttribute("officePreviewType", req.getParameter("officePreviewType"));
- FilePreview filePreview = previewFactory.get(fileAttribute);
- logger.info("预览文件url:{},previewType:{}", url, fileAttribute.getType());
- return filePreview.filePreviewHandle(url, model, fileAttribute);
- }
- @RequestMapping(value = "/picturesPreview")
- public String picturesPreview(Model model, HttpServletRequest req) {
- String urls = req.getParameter("urls");
- String currentUrl = req.getParameter("currentUrl");
- logger.info("预览文件url:{},urls:{}", currentUrl, urls);
- String[] imgs = urls.split("\\|");
- List<String> imgurls = Arrays.asList(imgs);
- model.addAttribute("imgurls", imgurls);
- model.addAttribute("currentUrl", currentUrl);
- return "picture";
- }
- /**
- * 根据url获取文件内容
- * 当pdfjs读取存在跨域问题的文件时将通过此接口读取
- *
- * @param urlPath url
- * @param response response
- */
- @RequestMapping(value = "/getCorsFile", method = RequestMethod.GET)
- public void getCorsFile(String urlPath, HttpServletResponse response) {
- logger.info("下载跨域pdf文件url:{}", urlPath);
- try {
- downloadUtils.saveToOutputStreamFromUrl(urlPath, response.getOutputStream());
- } catch (IOException e) {
- logger.error("下载跨域pdf文件异常,url:{}", urlPath, e);
- }
- }
- /**
- * 通过api接口入队
- * @param url 请编码后在入队
- */
- @GetMapping("/addTask")
- @ResponseBody
- public String addQueueTask(String url) {
- logger.info("添加转码队列url:{}", url);
- cacheService.addQueueTask(url);
- return "success";
- }
- }
|