瀏覽代碼

fix 修改 wx-java-cp

Young 2 年之前
父節點
當前提交
7993d7e95b

+ 14 - 0
support-demo/src/main/java/cn/nosum/wx/cp/controller/MediaController.java

@@ -1,18 +1,23 @@
 package cn.nosum.wx.cp.controller;
 
+import cn.nosum.http.SimpleDownloadRequestExecutor;
 import cn.nosum.http.entity.DownloadResponse;
 import cn.nosum.http.entity.UploadRequest;
 import cn.nosum.wx.common.api.WxConsts;
 import cn.nosum.wx.common.entity.result.WxMediaUploadResult;
 import cn.nosum.wx.common.error.WxErrorException;
+import cn.nosum.wx.cp.api.WxCpMediaService;
+import cn.nosum.wx.cp.api.WxCpService;
 import cn.nosum.wx.cp.config.WxCpConfiguration;
 import lombok.SneakyThrows;
 import org.apache.tomcat.util.http.fileupload.IOUtils;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.*;
+import java.net.URLEncoder;
 
 /**
  * 素材管理.
@@ -24,6 +29,15 @@ import java.io.*;
 public class MediaController {
 
     @SneakyThrows
+    @RequestMapping("/upload/url")
+    public WxMediaUploadResult uploadByUrl(String url, Integer appId) {
+        DownloadResponse execute = SimpleDownloadRequestExecutor.create(WxCpConfiguration.getCpService(appId).getRequestHttp()).execute("https://s3.cn-north-1.amazonaws.com.cn/s3-000045-cfglpic/fc61e4cc-41bb-40cd-8031-0e97e4d09924_%7BA2F6210E-02AD-4DA6-83B4-85CD78EAA24E%7D.png", null);
+        ByteArrayOutputStream byteArrayOutputStream = (ByteArrayOutputStream) execute.getOutputStream();
+        UploadRequest request = UploadRequest.builder().inputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())).fileName("test").build();
+        return WxCpConfiguration.getCpService(appId).getMediaService().upload(WxConsts.MediaFileType.IMAGE, request);
+    }
+
+    @SneakyThrows
     @RequestMapping("/upload")
     public WxMediaUploadResult upload(MultipartFile file, Integer appId) {
         UploadRequest request = UploadRequest.builder().inputStream(file.getInputStream()).fileName(file.getOriginalFilename()).build();

+ 0 - 12
support-demo/src/main/java/cn/nosum/wx/cp/controller/MessageController.java

@@ -1,23 +1,11 @@
 package cn.nosum.wx.cp.controller;
 
-import cn.nosum.http.entity.UploadRequest;
-import cn.nosum.wx.common.api.WxConsts;
-import cn.nosum.wx.common.entity.result.WxMediaUploadResult;
-import cn.nosum.wx.common.error.WxErrorException;
 import cn.nosum.wx.cp.api.WxCpMessageService;
 import cn.nosum.wx.cp.config.WxCpConfiguration;
 import cn.nosum.wx.cp.entity.message.WxCpMessage;
 import cn.nosum.wx.cp.entity.message.WxCpMessageSendResult;
-import lombok.SneakyThrows;
-import org.apache.tomcat.util.http.fileupload.IOUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.*;
-import java.time.LocalDateTime;
-
-import static org.apache.commons.io.FileUtils.openOutputStream;
 
 /**
  * 企业微信消息推送.

+ 7 - 4
support-http/src/main/java/cn/nosum/http/proxy/HttpResponseProxy.java

@@ -5,6 +5,7 @@ import cn.nosum.http.apache.Utf8ResponseHandler;
 import cn.nosum.http.entity.DownloadResponse;
 import cn.nosum.http.exception.HttpErrorException;
 import jodd.http.HttpResponse;
+import lombok.extern.slf4j.Slf4j;
 import okhttp3.Response;
 import org.apache.http.Header;
 import org.apache.http.client.methods.CloseableHttpResponse;
@@ -23,6 +24,7 @@ import java.util.regex.Pattern;
  *
  * @author Young
  */
+@Slf4j
 public class HttpResponseProxy {
     private static final Pattern PATTERN = Pattern.compile(".*filename=\"(.*)\"");
 
@@ -48,7 +50,7 @@ public class HttpResponseProxy {
      *
      * @return 文件名称
      */
-    public String getFileName() throws HttpErrorException {
+    public String getFileName() throws HttpErrorException{
         if (this.apacheHttpResponse != null) {
             return this.getFileName(this.apacheHttpResponse);
         }
@@ -155,9 +157,9 @@ public class HttpResponseProxy {
     private String getFileName(CloseableHttpResponse response) throws HttpErrorException {
         Header[] contentDispositionHeader = response.getHeaders("Content-disposition");
         if (contentDispositionHeader == null || contentDispositionHeader.length == 0) {
-            throw new HttpErrorException("无法获取到文件名,Content-disposition为空");
+            log.info("无法获取到文件名称");
+            return null;
         }
-
         return this.extractFileNameFromContentString(contentDispositionHeader[0].getValue());
     }
 
@@ -192,7 +194,8 @@ public class HttpResponseProxy {
      */
     private String extractFileNameFromContentString(String content) throws HttpErrorException {
         if (content == null || content.length() == 0) {
-            throw new HttpErrorException("无法获取到文件名,content为空");
+            log.info("file name is empty,check file stream!!");
+            return null;
         }
 
         Matcher m = PATTERN.matcher(content);