在企业公众号中上传媒体文件
说明
用于上传图片、语音、视频等媒体资源文件以及普通文件(如doc,ppt),接口返回媒体资源标识ID:media_id
。请注意,media_id
是可复用的,同一个media_id
可用于消息的多次发送(3天内有效)。正常情况下
限制
上传的媒体文件限制
- 所有文件size必须大于5个字节
- 图片(image):2MB,支持JPG,PNG格式
- 语音(voice):2MB,播放长度不超过60s,支持AMR格式
- 视频(video):10MB,支持MP4格式
- 普通文件(file):20MB
返回代码示例
1 2 3
| {"type":"image","media_id": "1infmXfNjpgZHRG9j9dOeWxzpUXF6ccOVZ6Qtz3gLFLvei1oLogZzSQKn8z4q3J8po-89vLfdqnUxJunWIeJtiw" ,"created_at":1447222170}
|
主要代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| * [execPostFile 上传文件] * @param {[type]} String url [微信上传媒体文件url:https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE] * @param {[type]} File tempFile [本地文件] * @return {[type]} [JSON对象] */ public static JSONObject execPostFile(String url, File tempFile) { CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httppost = new HttpPost(url); JSONObject jsonResult = null; try { MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addBinaryBody("media", tempFile); httppost.setEntity(builder.build()); HttpResponse result = httpclient.execute(httppost); if (result.getStatusLine().getStatusCode() == 200) { String str = ""; try { str = EntityUtils.toString(result.getEntity()); jsonResult = JSONObject.fromObject(str); } catch (Exception e) { logger.error("post请求提交失败:" + url, e); } } } catch (IOException e) { e.printStackTrace(); } return jsonResult; }
* 获取临时素材文件 */ public static String execGetFile(String url) throws IOException { CloseableHttpClient client = HttpClients.createDefault(); HttpGet get = new HttpGet(url); File result = null; String filename = ""; try { result = client.execute(get, fileHandler); filename = result.getName(); } catch (IOException e) { throw e; } return filename; }
|
参考文档