diff --git a/CHANGE.md b/CHANGE.md index 2195c7d2..5eb954de 100644 --- a/CHANGE.md +++ b/CHANGE.md @@ -625,4 +625,8 @@ + weixin4j-base:新增MemoryTokenStorager(内存保存token)类 - + weixin4j-base:TokenStorager类新增evict和clear接口 \ No newline at end of file + + weixin4j-base:TokenStorager类新增evict和clear接口 + +* 2016-01-26 + + + weixin4j-qy:新增上传图文消息内的图片接口 \ No newline at end of file diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java index 04771fe6..6b55593a 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java @@ -29,6 +29,7 @@ import com.foxinmy.weixin4j.http.HttpRequest; import com.foxinmy.weixin4j.http.HttpResponse; import com.foxinmy.weixin4j.http.apache.ByteArrayBody; import com.foxinmy.weixin4j.http.apache.FormBodyPart; +import com.foxinmy.weixin4j.http.apache.InputStreamBody; import com.foxinmy.weixin4j.http.weixin.JsonResult; import com.foxinmy.weixin4j.http.weixin.WeixinResponse; import com.foxinmy.weixin4j.model.Consts; @@ -73,6 +74,36 @@ public class MediaApi extends QyApi { this.tokenHolder = tokenHolder; } + /** + * 上传图文消息内的图片:用于上传图片到企业号服务端,接口返回图片url,请注意,该url仅可用于图文消息的发送, + * 且每个企业每天最多只能上传100张图片。 + * + * @param is + * 图片数据 + * @param fileName + * 文件名 + * @see 上传图文消息内的图片 + * @return 图片url + * @throws WeixinException + */ + public String uploadImage(InputStream is, String fileName) + throws WeixinException { + if (StringUtil.isBlank(fileName)) { + fileName = ObjectId.get().toHexString(); + } + if (StringUtil.isBlank(FileUtil.getFileExtension(fileName))) { + fileName = String.format("%s.jpg", fileName); + } + String media_uploadimg_uri = getRequestUri("media_uploadimg_uri"); + Token token = tokenHolder.getToken(); + WeixinResponse response = weixinExecutor.post(String.format( + media_uploadimg_uri, token.getAccessToken()), + new FormBodyPart("media", new InputStreamBody(is, + ContentType.IMAGE_JPG.getMimeType(), fileName))); + return response.getAsJson().getString("url"); + } + /** * 上传媒体文件:分别有图片(image)、语音(voice)、视频(video),普通文件(file) *
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/weixin.properties b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/weixin.properties index 3d9a7835..bb2db1c5 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/weixin.properties +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/weixin.properties @@ -47,6 +47,8 @@ tag_add_user_uri={api_base_url}/tag/addtagusers?access_token=%s tag_delete_user_uri={api_base_url}/tag/deltagusers?access_token=%s # \u9080\u8bf7\u6210\u5458\u5173\u6ce8 invite_user_uri={api_base_url}/invite/send?access_token=%s +# \u4e0a\u4f20\u56fe\u6587\u6d88\u606f\u4e2d\u7684\u56fe\u7247\u7d20\u6750 +media_uploadimg_uri={api_base_url}/media/uploadimg?access_token=%s # \u4e0a\u4f20\u5a92\u4f53\u6587\u4ef6 media_upload_uri={api_base_url}/media/upload?access_token=%s&type=%s # \u4e0b\u8f7d\u5a92\u4f53\u6587\u4ef6