|
@@ -5,6 +5,8 @@ import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
|
|
import me.chanjar.weixin.common.error.WxErrorException;
|
|
import me.chanjar.weixin.common.error.WxErrorException;
|
|
import me.chanjar.weixin.common.util.fs.FileUtils;
|
|
import me.chanjar.weixin.common.util.fs.FileUtils;
|
|
import me.chanjar.weixin.common.util.http.BaseMediaDownloadRequestExecutor;
|
|
import me.chanjar.weixin.common.util.http.BaseMediaDownloadRequestExecutor;
|
|
|
|
+import me.chanjar.weixin.common.util.http.InputStreamData;
|
|
|
|
+import me.chanjar.weixin.common.util.http.MediaInputStreamUploadRequestExecutor;
|
|
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
|
|
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
|
|
import me.chanjar.weixin.cp.api.WxCpMediaService;
|
|
import me.chanjar.weixin.cp.api.WxCpMediaService;
|
|
import me.chanjar.weixin.cp.api.WxCpService;
|
|
import me.chanjar.weixin.cp.api.WxCpService;
|
|
@@ -12,6 +14,8 @@ import me.chanjar.weixin.cp.api.WxCpService;
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
|
|
+import java.net.HttpURLConnection;
|
|
|
|
+import java.net.URL;
|
|
import java.util.UUID;
|
|
import java.util.UUID;
|
|
|
|
|
|
import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.Media.*;
|
|
import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.Media.*;
|
|
@@ -35,6 +39,32 @@ public class WxCpMediaServiceImpl implements WxCpMediaService {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ public WxMediaUploadResult upload(String mediaType, String filename, String url) throws WxErrorException, IOException {
|
|
|
|
+ HttpURLConnection conn = null;
|
|
|
|
+ InputStream inputStream = null;
|
|
|
|
+ try {
|
|
|
|
+ URL remote = new URL(url);
|
|
|
|
+ conn = (HttpURLConnection) remote.openConnection();
|
|
|
|
+ //设置超时间为3秒
|
|
|
|
+ conn.setConnectTimeout(60 * 1000);
|
|
|
|
+ //防止屏蔽程序抓取而返回403错误
|
|
|
|
+ conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
|
|
|
|
+ inputStream = conn.getInputStream();
|
|
|
|
+ return this.mainService.execute(MediaInputStreamUploadRequestExecutor.create(this.mainService.getRequestHttp()), this.mainService.getWxCpConfigStorage().getApiUrl(MEDIA_UPLOAD + mediaType), new InputStreamData(inputStream, filename));
|
|
|
|
+ } finally {
|
|
|
|
+ if (inputStream != null) {
|
|
|
|
+ try {
|
|
|
|
+ inputStream.close();
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (conn != null) {
|
|
|
|
+ conn.disconnect();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
public WxMediaUploadResult upload(String mediaType, File file) throws WxErrorException {
|
|
public WxMediaUploadResult upload(String mediaType, File file) throws WxErrorException {
|
|
return this.mainService.execute(MediaUploadRequestExecutor.create(this.mainService.getRequestHttp()),
|
|
return this.mainService.execute(MediaUploadRequestExecutor.create(this.mainService.getRequestHttp()),
|
|
this.mainService.getWxCpConfigStorage().getApiUrl(MEDIA_UPLOAD + mediaType), file);
|
|
this.mainService.getWxCpConfigStorage().getApiUrl(MEDIA_UPLOAD + mediaType), file);
|