Prechádzať zdrojové kódy

指定Base64转码采用Apache Commons-code中的实现,修复base64部分jdk版本下出现的异常

kl 4 rokov pred
rodič
commit
5ec53c4b33

+ 2 - 3
server/src/main/java/cn/keking/service/impl/SimTextFilePreviewImpl.java

@@ -5,14 +5,13 @@ import cn.keking.model.ReturnResponse;
 import cn.keking.service.FilePreview;
 import cn.keking.utils.DownloadUtils;
 import cn.keking.utils.KkFileUtils;
+import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.FileUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.Model;
-import org.springframework.util.Base64Utils;
 
 import java.io.File;
 import java.io.IOException;
-import java.nio.charset.StandardCharsets;
 
 /**
  * Created by kl on 2018/1/17.
@@ -38,7 +37,7 @@ public class SimTextFilePreviewImpl implements FilePreview {
             File originFile = new File(response.getContent());
             String charset = KkFileUtils.getFileEncode(originFile);
             String fileData = FileUtils.readFileToString(originFile, charset);
-            model.addAttribute("textData", Base64Utils.encodeToString(fileData.getBytes(StandardCharsets.UTF_8)));
+            model.addAttribute("textData", Base64.encodeBase64String(fileData.getBytes()));
         } catch (IOException e) {
             return otherFilePreview.notSupportedFile(model, fileAttribute, e.getLocalizedMessage());
         }

+ 4 - 4
server/src/main/java/cn/keking/web/controller/OnlinePreviewController.java

@@ -9,12 +9,12 @@ import cn.keking.service.impl.OtherFilePreviewImpl;
 import cn.keking.service.FileHandlerService;
 import cn.keking.utils.WebUtils;
 import io.mola.galimatias.GalimatiasParseException;
+import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.util.Base64Utils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -54,7 +54,7 @@ public class OnlinePreviewController {
     public String onlinePreview(String url, Model model, HttpServletRequest req) {
         String fileUrl;
         try {
-            fileUrl = new String(Base64Utils.decodeFromString(url));
+            fileUrl = new String(Base64.decodeBase64(url));
         } catch (Exception ex) {
             String errorMsg = String.format(BASE64_DECODE_ERROR_MSG, "url");
             return otherFilePreview.notSupportedFile(model, errorMsg);
@@ -70,7 +70,7 @@ public class OnlinePreviewController {
     public String picturesPreview(String urls, Model model, HttpServletRequest req) throws UnsupportedEncodingException {
         String fileUrls;
         try {
-            fileUrls = new String(Base64Utils.decodeFromString(urls));
+            fileUrls = new String(Base64.decodeBase64(urls));
         } catch (Exception ex) {
             String errorMsg = String.format(BASE64_DECODE_ERROR_MSG, "urls");
             return otherFilePreview.notSupportedFile(model, errorMsg);
@@ -83,7 +83,7 @@ public class OnlinePreviewController {
 
         String currentUrl = req.getParameter("currentUrl");
         if (StringUtils.hasText(currentUrl)) {
-            String decodedCurrentUrl = new String(Base64Utils.decodeFromString(currentUrl));
+            String decodedCurrentUrl = new String(Base64.decodeBase64(currentUrl));
             model.addAttribute("currentUrl", decodedCurrentUrl);
         } else {
             model.addAttribute("currentUrl", imgUrls.get(0));