anderx лет назад: 3
Родитель
Сommit
8f197b4b56

+ 6 - 0
pom.xml

@@ -368,6 +368,12 @@
 			<artifactId>jaxb-api</artifactId>
 			<version>2.3.0</version>
 		</dependency>
+		<!--Thumbnails-->
+		<dependency>
+			<groupId>net.coobird</groupId>
+			<artifactId>thumbnailator</artifactId>
+			<version>0.4.8</version>
+		</dependency>
 
 	</dependencies>
 	<build>

+ 23 - 14
src/main/java/com/kede/common/controller/BaseApiController.java

@@ -1,7 +1,6 @@
 package com.kede.common.controller;
 
-import java.io.File;
-import java.io.IOException;
+import java.io.*;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -9,6 +8,7 @@ import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import net.coobird.thumbnailator.Thumbnails;
 import org.apache.commons.fileupload.servlet.ServletFileUpload;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -32,7 +32,7 @@ public class BaseApiController extends BaseController {
 	private String	uploadPrivatePath	= null;
 
 	/**
-	 * 
+	 *
 	 * @param request
 	 * @return
 	 */
@@ -49,7 +49,7 @@ public class BaseApiController extends BaseController {
 	}
 
 	/**
-	 * 
+	 *
 	 * @param res
 	 * @param path
 	 * @param isPrivate
@@ -64,7 +64,13 @@ public class BaseApiController extends BaseController {
 			try {
 				MultipartFile mf = files.get(0);
 				fileName = FileUtils.splicingFileName(mf, isPrivate, sign, path, TokenManager.getAdminId());
-				mf.transferTo(isPrivate ? toPrivateFile(fileName) : toFile(fileName));
+				if (mf.getSize()<=1024*1024*3){
+					File f = isPrivate ? toPrivateFile(fileName) : toFile(fileName);
+					mf.transferTo(f);
+				}else {
+					//主要操作,先将文件的长宽变小,再进行压缩
+					Thumbnails.of(mf.getInputStream()).scale(0.25f).toFile(uploadPath+fileName);
+				}
 				LoggerUtils.debug(getClass(), fileName + " 文件上传成功");
 			} catch (Exception e) {
 				LoggerUtils.error(getClass(), "文件上传失败", e);
@@ -75,15 +81,13 @@ public class BaseApiController extends BaseController {
 		}
 		return fileName;
 	}
-	
+
 
 	/**
-	 * 
+	 *
 	 * @param res
-	 * @param path
 	 * @param isPrivate
 	 * @param req
-	 * @param sign
 	 * @return
 	 */
 	protected String handleFile(Result res, boolean isPrivate, HttpServletRequest req, String... fileName) {
@@ -94,7 +98,12 @@ public class BaseApiController extends BaseController {
 				MultipartFile mf = files.get(0);
 				realFilePath = FileUtils.buildFilePath(fileName) + FileUtils.getSuffix(mf.getOriginalFilename());
 				File f = isPrivate ? toPrivateFile(realFilePath) : toFile(realFilePath);
-				mf.transferTo(f);
+				if (mf.getSize()<=1024*20){
+					mf.transferTo(f);
+				}else {
+					//主要操作,先将文件的长宽变小,再进行压缩
+					Thumbnails.of(mf.getInputStream()).size(500,500).outputQuality(0.25d).toFile(f);
+				}
 				LoggerUtils.debug(getClass(), realFilePath + " 文件上传成功");
 			} catch (Exception e) {
 				LoggerUtils.error(getClass(), "文件上传失败", e);
@@ -107,7 +116,7 @@ public class BaseApiController extends BaseController {
 	}
 
 	/**
-	 * 
+	 *
 	 * @param res
 	 * @param fileName
 	 * @param filePath
@@ -127,7 +136,7 @@ public class BaseApiController extends BaseController {
 	}
 
 	/**
-	 * 
+	 *
 	 * @param fileName
 	 * @return
 	 */
@@ -136,7 +145,7 @@ public class BaseApiController extends BaseController {
 	}
 
 	/**
-	 * 
+	 *
 	 * @param fileName
 	 * @return
 	 */
@@ -145,7 +154,7 @@ public class BaseApiController extends BaseController {
 	}
 
 	/**
-	 * 
+	 *
 	 * @param fileName
 	 * @return
 	 */

+ 19 - 11
src/main/java/com/kede/news/controller/AdminNewsApiController.java

@@ -23,7 +23,7 @@ import com.kede.news.service.NewsService;
 public class AdminNewsApiController extends BaseApiController {
 	@Resource
  	private NewsService	newsService;
-	
+
 
 	@RequestMapping(value = "/addNews", method = RequestMethod.POST)
 	public Result addNews(InputNews in) {
@@ -57,16 +57,16 @@ public class AdminNewsApiController extends BaseApiController {
 		return res;
 	}
 
-		
-		
-	
+
+
+
 	@RequestMapping(value = "/updateNews", method = RequestMethod.POST)
 	public Result updateNews(InputNews in) {
 		Result res =new Result();
 		res.data(newsService.updateNews(in));
 		return res;
 	}
-	
+
 	@RequestMapping(value = "/deleteNews", method = RequestMethod.POST)
 	public Result deleteNews(InputNews in) {
 		Result res =new Result();
@@ -77,15 +77,15 @@ public class AdminNewsApiController extends BaseApiController {
 		res.data(newsService.deleteNews(in));
 		return res;
 	}
-	
+
 	@RequestMapping(value = "/listNews", method = RequestMethod.GET)
 	public Result listNews(InputNews in,Integer pageSize,Integer pageNo) {
 		Result res =new Result();
-		
+
 		res.data(newsService.listnewsDetails(in,pageSize,pageNo));
 		return res;
 	}
-	
+
 	@RequestMapping(value = "/selectNews", method = RequestMethod.GET)
 	public Result selectNews(InputNews in) {
 		Result res =new Result();
@@ -97,15 +97,23 @@ public class AdminNewsApiController extends BaseApiController {
 		res.data(newsService.selectNews(in));
 		return res;
 	}
-	
+
 	/** 上传图片 **/
 	@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
-	public Result uploadOrderInvoiceFile(HttpServletRequest req){
+	public Result uploadNewsFile(HttpServletRequest req){
 		Result res = new Result();
 		res.setData(handleFile(res, "/news/", false, req, "news"));
 		return res;
 	}
 
-	
+
+	/** 上传图片 **/
+	@RequestMapping(value = "/uploadCompressFile", method = RequestMethod.POST)
+	public Result uploadCompressFile(HttpServletRequest req){
+		Result res = new Result();
+		res.setData(handleFile(res, false, req, "news","1"));
+		return res;
+	}
+
 
 }

+ 1 - 0
src/main/webapp/WEB-INF/views/common.html

@@ -8,6 +8,7 @@
     <th:block th:replace="${title}" />
     <meta name="applicable-device" content="pc,mobile">
     <meta name="viewport" content="width=device-width,initial-scale=1.0, user-scalable=no">
+    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"/>
     <link rel="icon" th:href="${portalHost+'/images/icon/kedexinxi.ico'}"  type="image/x-icon">
     <!--Bootstrap CSS 文件 -->
     <link rel="stylesheet" th:href="${portalHost+'/css/bootstrap.min.css'}">