From 54c2ab0ed11b1763b9cbccf0f82ddfd2c8d7413f Mon Sep 17 00:00:00 2001 From: jinyu Date: Sat, 20 Feb 2016 16:15:24 +0800 Subject: [PATCH] fixed #34 --- .../com/foxinmy/weixin4j/mp/WeixinProxy.java | 8 +++++--- .../com/foxinmy/weixin4j/mp/api/MediaApi.java | 19 ++++++++++++------- .../foxinmy/weixin4j/mp/test/MediaTest.java | 4 ++-- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java index 1580a997..744acd36 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java @@ -320,6 +320,8 @@ public class WeixinProxy { * * @param is * 大小不超过1M且格式为MP4的视频文件 + * @param fileName + * 文件名 为空时将自动生成 * @param title * 视频标题 * @param introduction @@ -330,9 +332,9 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.MediaApi * @throws WeixinException */ - public String uploadMaterialVideo(InputStream is, String title, - String introduction) throws WeixinException { - return mediaApi.uploadMaterialVideo(is, title, introduction); + public String uploadMaterialVideo(InputStream is, String fileName, + String title, String introduction) throws WeixinException { + return mediaApi.uploadMaterialVideo(is, fileName, title, introduction); } /** 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 d0274c54..362944af 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 @@ -400,17 +400,25 @@ public class MediaApi extends MpApi { * * @param is * 大小不超过1M且格式为MP4的视频文件 + * @param fileName + * 文件名 为空时将自动生成 * @param title * 视频标题 * @param introduction - * 视频描述 + * 视频描述 可以为空 * @return 上传到微信服务器返回的媒体标识 * @see 上传永久媒体素材 * @throws WeixinException */ - public String uploadMaterialVideo(InputStream is, String title, - String introduction) throws WeixinException { + public String uploadMaterialVideo(InputStream is, String fileName, + String title, String introduction) throws WeixinException { + if (StringUtil.isBlank(fileName)) { + fileName = ObjectId.get().toHexString(); + } + if (StringUtil.isBlank(FileUtil.getFileExtension(fileName))) { + fileName = String.format("%s.mp4", fileName); + } String material_media_upload_uri = getRequestUri("material_media_upload_uri"); Token token = tokenHolder.getToken(); try { @@ -421,10 +429,7 @@ public class MediaApi extends MpApi { String.format(material_media_upload_uri, token.getAccessToken()), new FormBodyPart("media", new InputStreamBody(is, - MediaType.video.getContentType().getMimeType(), - ObjectId.get().toHexString())), - new FormBodyPart("type", new StringBody(MediaType.video - .name(), Consts.UTF_8)), + ContentType.VIDEO_MPEG4.getMimeType(), fileName)), new FormBodyPart("description", new StringBody(description .toJSONString(), Consts.UTF_8))); return response.getAsJson().getString("media_id"); diff --git a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java index 3e88a779..46fa08e6 100644 --- a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java +++ b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java @@ -74,9 +74,9 @@ public class MediaTest extends TokenTest { @Test public void uploadMaterialVideo() throws IOException, WeixinException { - File file = new File("/Users/jy/Downloads/test.jpg"); + File file = new File("/Users/jy/Downloads/test.mp4"); String mediaId = mediaApi.uploadMaterialVideo( - new FileInputStream(file), "title", "introduction"); + new FileInputStream(file), "filename", "title", "introduction"); // Sy1KOLsi4ri3kB3TYUuculVelcW2I7W6BrfGwkGvSW8beTCAarxuGQLjuNJChJr8 Assert.assertNotNull(mediaId); System.err.println(mediaId);