diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/apache/InputStreamBody.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/apache/InputStreamBody.java index 75ffb9ba..a0993907 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/apache/InputStreamBody.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/apache/InputStreamBody.java @@ -39,6 +39,7 @@ public class InputStreamBody extends AbstractContentBody { private final InputStream in; private final String filename; + private int contentLength; public InputStreamBody(final InputStream in, final String mimeType, final String filename) { @@ -67,6 +68,7 @@ public class InputStreamBody extends AbstractContentBody { int l; while ((l = this.in.read(tmp)) != -1) { out.write(tmp, 0, l); + contentLength += l; } out.flush(); } finally { @@ -83,12 +85,7 @@ public class InputStreamBody extends AbstractContentBody { } public long getContentLength() { - try { - return in.available(); - } catch (IOException e) { - ; - } - return -1; + return contentLength; } public String getFilename() { diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java index 2618637c..83d57cd1 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java @@ -207,7 +207,7 @@ public class MediaApi extends MpApi { String media_upload_uri = getRequestUri("media_upload_uri"); response = weixinExecutor.post(String.format(media_upload_uri, token.getAccessToken(), mediaType.name()), - new FormBodyPart("media", new ByteArrayBody(content, mediaType + new FormBodyPart("media", new InputStreamBody(new ByteArrayInputStream(content), mediaType .getContentType().getMimeType(), fileName))); JSONObject obj = response.getAsJson();