From 267e184af1ae002750bf77fbac9c6758009782f8 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Tue, 10 Dec 2019 11:05:47 +0800 Subject: [PATCH] fix: #416 --- .../app/handler/file/AliOssFileHandler.java | 10 +++++-- .../app/handler/file/BaiduBosFileHandler.java | 10 +++++-- .../app/handler/file/LocalFileHandler.java | 18 ++---------- .../app/handler/file/QiniuOssFileHandler.java | 8 ++++- .../app/handler/file/SmmsFileHandler.java | 9 +++--- .../handler/file/TencentCosFileHandler.java | 10 +++++-- .../app/handler/file/UpOssFileHandler.java | 10 +++++-- .../java/run/halo/app/utils/ImageUtils.java | 29 +++++++++++++++++++ 8 files changed, 71 insertions(+), 33 deletions(-) create mode 100644 src/main/java/run/halo/app/utils/ImageUtils.java diff --git a/src/main/java/run/halo/app/handler/file/AliOssFileHandler.java b/src/main/java/run/halo/app/handler/file/AliOssFileHandler.java index b63aa103f..a582f627f 100644 --- a/src/main/java/run/halo/app/handler/file/AliOssFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/AliOssFileHandler.java @@ -16,8 +16,8 @@ import run.halo.app.model.properties.AliOssProperties; import run.halo.app.model.support.UploadResult; import run.halo.app.service.OptionService; import run.halo.app.utils.FilenameUtils; +import run.halo.app.utils.ImageUtils; -import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.util.Objects; @@ -82,10 +82,14 @@ public class AliOssFileHandler implements FileHandler { // Handle thumbnail if (FileHandler.isImageType(uploadResult.getMediaType())) { - BufferedImage image = ImageIO.read(file.getInputStream()); + BufferedImage image = ImageUtils.getImageFromFile(file.getInputStream(), extension); uploadResult.setWidth(image.getWidth()); uploadResult.setHeight(image.getHeight()); - uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); + if (ImageUtils.EXTENSION_ICO.equals(extension)) { + uploadResult.setThumbPath(filePath); + } else { + uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); + } } return uploadResult; diff --git a/src/main/java/run/halo/app/handler/file/BaiduBosFileHandler.java b/src/main/java/run/halo/app/handler/file/BaiduBosFileHandler.java index 5743afe58..b681469d1 100644 --- a/src/main/java/run/halo/app/handler/file/BaiduBosFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/BaiduBosFileHandler.java @@ -17,8 +17,8 @@ import run.halo.app.model.properties.BaiduBosProperties; import run.halo.app.model.support.UploadResult; import run.halo.app.service.OptionService; import run.halo.app.utils.FilenameUtils; +import run.halo.app.utils.ImageUtils; -import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.util.Objects; @@ -87,10 +87,14 @@ public class BaiduBosFileHandler implements FileHandler { // Handle thumbnail if (FileHandler.isImageType(uploadResult.getMediaType())) { - BufferedImage image = ImageIO.read(file.getInputStream()); + BufferedImage image = ImageUtils.getImageFromFile(file.getInputStream(), extension); uploadResult.setWidth(image.getWidth()); uploadResult.setHeight(image.getHeight()); - uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); + if (ImageUtils.EXTENSION_ICO.equals(extension)) { + uploadResult.setThumbPath(filePath); + } else { + uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); + } } return uploadResult; diff --git a/src/main/java/run/halo/app/handler/file/LocalFileHandler.java b/src/main/java/run/halo/app/handler/file/LocalFileHandler.java index e6bb126b7..e87797583 100644 --- a/src/main/java/run/halo/app/handler/file/LocalFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/LocalFileHandler.java @@ -2,7 +2,6 @@ package run.halo.app.handler.file; import lombok.extern.slf4j.Slf4j; import net.coobird.thumbnailator.Thumbnails; -import net.sf.image4j.codec.ico.ICODecoder; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.util.Assert; @@ -15,10 +14,10 @@ import run.halo.app.model.support.UploadResult; import run.halo.app.service.OptionService; import run.halo.app.utils.FilenameUtils; import run.halo.app.utils.HaloUtils; +import run.halo.app.utils.ImageUtils; -import javax.imageio.ImageIO; import java.awt.image.BufferedImage; -import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -150,7 +149,7 @@ public class LocalFileHandler implements FileHandler { Path thumbnailPath = Paths.get(workDir + thumbnailSubFilePath); // Read as image - BufferedImage originalImage = getImageFromFile(uploadPath.toFile(), extension); + BufferedImage originalImage = ImageUtils.getImageFromFile(new FileInputStream(uploadPath.toFile()), extension); // Set width and height uploadResult.setWidth(originalImage.getWidth()); uploadResult.setHeight(originalImage.getHeight()); @@ -237,15 +236,4 @@ public class LocalFileHandler implements FileHandler { } return result; } - - private BufferedImage getImageFromFile(File file, String extension) throws IOException { - log.debug("Current File type is : [{}]", extension); - - if ("ico".equals(extension)) { - return ICODecoder.read(file).get(0); - } else { - return ImageIO.read(file); - } - } - } diff --git a/src/main/java/run/halo/app/handler/file/QiniuOssFileHandler.java b/src/main/java/run/halo/app/handler/file/QiniuOssFileHandler.java index bebb4ffe8..d456cbbaa 100644 --- a/src/main/java/run/halo/app/handler/file/QiniuOssFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/QiniuOssFileHandler.java @@ -22,8 +22,10 @@ import run.halo.app.model.support.QiNiuPutSet; import run.halo.app.model.support.UploadResult; import run.halo.app.service.OptionService; import run.halo.app.utils.FilenameUtils; +import run.halo.app.utils.ImageUtils; import run.halo.app.utils.JsonUtils; +import java.awt.image.BufferedImage; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; @@ -114,7 +116,11 @@ public class QiniuOssFileHandler implements FileHandler { result.setSize(file.getSize()); if (isImageType(result.getMediaType())) { - result.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); + if (ImageUtils.EXTENSION_ICO.equals(extension)) { + result.setThumbPath(filePath); + } else { + result.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); + } } return result; diff --git a/src/main/java/run/halo/app/handler/file/SmmsFileHandler.java b/src/main/java/run/halo/app/handler/file/SmmsFileHandler.java index 3acc7c0ee..5b61b440e 100644 --- a/src/main/java/run/halo/app/handler/file/SmmsFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/SmmsFileHandler.java @@ -76,9 +76,9 @@ public class SmmsFileHandler implements FileHandler { HttpHeaders headers = new HttpHeaders(); // Set content type headers.setContentType(MediaType.MULTIPART_FORM_DATA); - // Set user agent manually - headers.set(HttpHeaders.USER_AGENT, DEFAULT_USER_AGENT); headers.set(HttpHeaders.AUTHORIZATION, apiSecretToken); + headers.set(HttpHeaders.USER_AGENT, DEFAULT_USER_AGENT); + LinkedMultiValueMap body = new LinkedMultiValueMap<>(); @@ -89,7 +89,6 @@ public class SmmsFileHandler implements FileHandler { throw new FileOperationException("上传附件 " + file.getOriginalFilename() + " 到 SM.MS 失败", e); } - body.add("ssl", false); body.add("format", "json"); HttpEntity> httpEntity = new HttpEntity<>(body, headers); @@ -109,7 +108,7 @@ public class SmmsFileHandler implements FileHandler { // Check error if (!isResponseSuccessfully(smmsResponse)) { log.error("Smms response detail: [{}]", smmsResponse); - throw new FileOperationException(smmsResponse == null ? "SM.MS 服务返回内容为空" : smmsResponse.getMsg()).setErrorData(smmsResponse); + throw new FileOperationException(smmsResponse == null ? "SM.MS 服务返回内容为空" : smmsResponse.getMessage()).setErrorData(smmsResponse); } // Get response data @@ -180,7 +179,7 @@ public class SmmsFileHandler implements FileHandler { private String code; - private String msg; + private String message; private SmmsResponseData data; diff --git a/src/main/java/run/halo/app/handler/file/TencentCosFileHandler.java b/src/main/java/run/halo/app/handler/file/TencentCosFileHandler.java index 949ca5580..e5cc55bf3 100644 --- a/src/main/java/run/halo/app/handler/file/TencentCosFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/TencentCosFileHandler.java @@ -20,8 +20,8 @@ import run.halo.app.model.properties.TencentCosProperties; import run.halo.app.model.support.UploadResult; import run.halo.app.service.OptionService; import run.halo.app.utils.FilenameUtils; +import run.halo.app.utils.ImageUtils; -import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.util.Objects; @@ -100,10 +100,14 @@ public class TencentCosFileHandler implements FileHandler { // Handle thumbnail if (FileHandler.isImageType(uploadResult.getMediaType())) { - BufferedImage image = ImageIO.read(file.getInputStream()); + BufferedImage image = ImageUtils.getImageFromFile(file.getInputStream(), extension); uploadResult.setWidth(image.getWidth()); uploadResult.setHeight(image.getHeight()); - uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); + if (ImageUtils.EXTENSION_ICO.equals(extension)) { + uploadResult.setThumbPath(filePath); + } else { + uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); + } } return uploadResult; diff --git a/src/main/java/run/halo/app/handler/file/UpOssFileHandler.java b/src/main/java/run/halo/app/handler/file/UpOssFileHandler.java index 632b12c0d..43cee4926 100644 --- a/src/main/java/run/halo/app/handler/file/UpOssFileHandler.java +++ b/src/main/java/run/halo/app/handler/file/UpOssFileHandler.java @@ -14,8 +14,8 @@ import run.halo.app.model.properties.UpOssProperties; import run.halo.app.model.support.UploadResult; import run.halo.app.service.OptionService; import run.halo.app.utils.FilenameUtils; +import run.halo.app.utils.ImageUtils; -import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.util.Objects; @@ -86,10 +86,14 @@ public class UpOssFileHandler implements FileHandler { // Handle thumbnail if (FileHandler.isImageType(uploadResult.getMediaType())) { - BufferedImage image = ImageIO.read(file.getInputStream()); + BufferedImage image = ImageUtils.getImageFromFile(file.getInputStream(), extension); uploadResult.setWidth(image.getWidth()); uploadResult.setHeight(image.getHeight()); - uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); + if(ImageUtils.EXTENSION_ICO.equals(extension)){ + uploadResult.setThumbPath(filePath); + }else { + uploadResult.setThumbPath(StringUtils.isBlank(thumbnailStyleRule) ? filePath : filePath + thumbnailStyleRule); + } } return uploadResult; diff --git a/src/main/java/run/halo/app/utils/ImageUtils.java b/src/main/java/run/halo/app/utils/ImageUtils.java new file mode 100644 index 000000000..e5205e760 --- /dev/null +++ b/src/main/java/run/halo/app/utils/ImageUtils.java @@ -0,0 +1,29 @@ +package run.halo.app.utils; + +import lombok.extern.slf4j.Slf4j; +import net.sf.image4j.codec.ico.ICODecoder; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.InputStream; + +/** + * @author ryanwang + * @date 2019-12-10 + */ +@Slf4j +public class ImageUtils { + + public static final String EXTENSION_ICO = "ico"; + + public static BufferedImage getImageFromFile(InputStream is, String extension) throws IOException { + log.debug("Current File type is : [{}]", extension); + + if (EXTENSION_ICO.equals(extension)) { + return ICODecoder.read(is).get(0); + } else { + return ImageIO.read(is); + } + } +}