在企业公众号中上传媒体文件

说明

用于上传图片、语音、视频等媒体资源文件以及普通文件(如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 {
/** 读取服务器返回过来的json字符串数据 **/
str = EntityUtils.toString(result.getEntity());
/** 把json字符串转换成json对象 **/
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;
}

参考文档

文章目录
  1. 1. 说明
  2. 2. 限制
  3. 3. 返回代码示例
  4. 4. 主要代码实现
  5. 5. 参考文档