From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-file/jnpf-file-yozo/jnpf-file-yozo-biz/src/main/java/jnpf/util/YozoUtils.java | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 217 insertions(+), 0 deletions(-)
diff --git a/jnpf-file/jnpf-file-yozo/jnpf-file-yozo-biz/src/main/java/jnpf/util/YozoUtils.java b/jnpf-file/jnpf-file-yozo/jnpf-file-yozo-biz/src/main/java/jnpf/util/YozoUtils.java
new file mode 100644
index 0000000..943f0cc
--- /dev/null
+++ b/jnpf-file/jnpf-file-yozo/jnpf-file-yozo-biz/src/main/java/jnpf/util/YozoUtils.java
@@ -0,0 +1,217 @@
+package jnpf.util;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.Method;
+import jnpf.model.YozoParams;
+import jnpf.util.context.SpringContext;
+import jnpf.yozo.client.AppAuthenticator;
+import jnpf.yozo.client.UaaAppAuthenticator;
+import jnpf.yozo.constants.EnumResultCode;
+import jnpf.yozo.constants.UaaConstant;
+import jnpf.yozo.utils.DefaultResult;
+import jnpf.yozo.utils.IResult;
+import lombok.Cleanup;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.mime.HttpMultipartMode;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.entity.mime.content.FileBody;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 鏂囦欢棰勮缂栬緫宸ュ叿绫�
+ *
+ * @author JNPF寮�鍙戝钩鍙扮粍
+ * @version V3.1.0
+ * @copyright 寮曡繄淇℃伅鎶�鏈湁闄愬叕鍙革紙https://www.jnpfsoft.com锛�
+ * @date 2021/5/13
+ */
+@Slf4j
+@Component
+public class YozoUtils {
+
+
+ private final YozoParams yozoParams = SpringContext.getBean(YozoParams.class);
+
+ /**
+ * 鐢熸垚绛惧悕
+ *
+ * @param appId
+ * @param secret
+ * @param params
+ * @return
+ */
+ public IResult<String> generateSign(String appId, String secret, Map<String, String[]> params) {
+ AppAuthenticator authenticator = new UaaAppAuthenticator(UaaConstant.SIGN, null, UaaConstant.APPID);
+ try {
+ String[] appIds = params.get(UaaConstant.APPID);
+ if (appIds == null || appIds.length != 1 || StringUtils.isEmpty(appIds[0])) {
+ params.put(UaaConstant.APPID, new String[]{appId});
+ }
+ String sign = authenticator.generateSign(secret, params);
+ return DefaultResult.successResult(sign);
+ } catch (Exception e) {
+ return DefaultResult.failResult(EnumResultCode.E_GENERATE_SIGN_FAIL.getInfo());
+ }
+ }
+
+ /**
+ * 鑾峰彇鏂囦欢鍚�
+ *
+ * @param fileName
+ * @param templateType
+ * @return
+ */
+ public String getFileName(String fileName, String templateType) {
+ String suffix;
+ switch (templateType) {
+ case "1":
+ suffix = ".doc";
+ break;
+ case "2":
+ suffix = ".docx";
+ break;
+ case "3":
+ suffix = ".ppt";
+ break;
+ case "4":
+ suffix = ".pptx";
+ break;
+ case "5":
+ suffix = ".xls";
+ break;
+ case "6":
+ suffix = ".xlsx";
+ break;
+ default:
+ suffix = null;
+ }
+ if (suffix == null) {
+ return null;
+ }
+ return fileName + suffix;
+ }
+
+ /**
+ * 浣跨敤httpclint 鍙戦�佹枃浠�
+ *
+ * @param file 涓婁紶鐨勬枃浠�
+ * @author: qingfeng
+ * @date: 2019-05-27
+ */
+ public String uploadFile(String url, File file, String appId, String sign) {
+ String result = "";
+ //鏋勫缓HttpClient瀵硅薄
+ CloseableHttpResponse response = null;
+ //鏋勫缓POST璇锋眰
+ HttpPost httpPost = new HttpPost(url);
+ try {
+ @Cleanup CloseableHttpClient client = HttpClients.createDefault();
+ //鏋勫缓鏂囦欢浣�
+ String fileName = file.getName();
+ FileBody fileBody = new FileBody(file, ContentType.MULTIPART_FORM_DATA, fileName);
+ HttpEntity httpEntity = MultipartEntityBuilder
+ .create()
+ .setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
+ .addPart("file", fileBody)
+ .addTextBody("appId", appId)
+ .addTextBody("sign", sign)
+ .build();
+ httpPost.setEntity(httpEntity);
+ // 鎵цhttp璇锋眰
+ response = client.execute(httpPost);
+ result = EntityUtils.toString(response.getEntity(), "utf-8");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+ /**
+ * 涓嬭浇鏂囦欢鍒版寚瀹氱洰褰�
+ *
+ * @param fileUrl
+ * @param savePath
+ * @throws Exception
+ */
+ public void downloadFile(String fileUrl, String savePath) throws IOException {
+ File file = new File(XSSEscape.escapePath(savePath));
+ //鍒ゆ柇鏂囦欢鏄惁瀛樺湪锛屼笉瀛樺湪鍒欏垱寤烘枃浠�
+ if (!file.exists()) {
+ boolean newFile = file.createNewFile();
+ if (newFile) {
+ log.info("鍒涘缓鎴愬姛");
+ } else {
+ log.info("鍒涘缓澶辫触");
+ }
+ }
+ HttpRequest request = HttpRequest.of(fileUrl).method(Method.GET);
+ request.setConnectionTimeout(6000);
+ request.setReadTimeout(6000);
+ try {
+ request.execute().body();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 涓婁紶鏂囦欢鍒版案涓�
+ *
+ * @param
+ * @return
+ */
+ public String uploadFileInPreview(InputStream inputStream, String fileName) throws IOException {
+ //鑾峰彇绛惧悕
+ Map<String, String[]> parameter = new HashMap<>();
+ parameter.put("appId", new String[]{yozoParams.getAppId()});
+ String sign = this.generateSign(yozoParams.getAppId(), yozoParams.getAppKey(), parameter).getData();
+ String url = "http://dmc.yozocloud.cn/api/file/upload?appId=" + yozoParams.getAppId() + "&sign=" + sign;
+
+
+ String result = "";
+ HttpEntity httpEntity = null;
+ HttpEntity responseEntity = null;
+ @Cleanup CloseableHttpClient httpClient = HttpClients.createDefault();
+ try {
+
+ HttpPost httpPost = new HttpPost(url);
+ MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
+ multipartEntityBuilder.setCharset(StandardCharsets.UTF_8);
+ multipartEntityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//鍔犱笂姝よ浠g爜瑙e喅杩斿洖涓枃涔辩爜闂
+ multipartEntityBuilder.addBinaryBody("file", inputStream, ContentType.MULTIPART_FORM_DATA, fileName);
+
+ httpEntity = multipartEntityBuilder.build();
+ httpPost.setEntity(httpEntity);
+ CloseableHttpResponse response = httpClient.execute(httpPost);
+ responseEntity = response.getEntity();
+ result = EntityUtils.toString(responseEntity, StandardCharsets.UTF_8);
+
+
+ } catch (Exception e) {
+
+ e.printStackTrace();
+ } finally {
+ httpClient.close();
+ if (inputStream != null) {
+ inputStream.close();
+ }
+
+ }
+ return result;
+ }
+}
--
Gitblit v1.8.0