微信上传图片到永久素材库接口开发
2017-04-08 14:32
489 查看
调用微信接口上传图片到微信永久素材库
Java代码:
//获取token,调微信接口--上传图片到永久素材库
String accessToken = "";
String url = "https://api.weixin.qq.com/cgi-bin/material/add_material?type=image&access_token=" + accessToken;
String media_id = WxUploadImage.postFile(url, 图片的绝对路径);
调用工具类:
public class WxUploadImage {
private final static Logger logger = Logger.getLogger(SettingPushController.class);
/*
* 调微信接口上传永久图片
*/
public static String postFile(String url, String filePath) throws IOException {
File file = new File(filePath);
if (!file.exists()) {
throw new IOException("文件不存在");
}
String result = null;
try {
URL url1 = new URL(url);
// 连接
HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
/**
* 设置关键值
*/
conn.setConnectTimeout(5000);
conn.setReadTimeout(30000);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false); // post方式不能使用缓存
conn.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式
// 设置请求头信息
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Cache-Control", "no-cache");
// 设置边界
String boundary = "-----------------------------" + System.currentTimeMillis();
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
// 请求正文信息
OutputStream output = conn.getOutputStream();
output.write(("--" + boundary + "\r\n").getBytes());
output.write(
String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"\r\n", file.getName())
.getBytes());
output.write("Content-Type: image/jpeg \r\n\r\n".getBytes());
byte[] data = new byte[1024];
int len = 0;
FileInputStream input = new FileInputStream(file);
while ((len = input.read(data)) > -1) {
output.write(data, 0, len);
}
output.write(("\r\n--" + boundary + "\r\n\r\n").getBytes());
output.flush();
output.close();
input.close();
InputStream resp = conn.getInputStream();
StringBuffer sb = new StringBuffer();
while ((len = resp.read(data)) > -1)
sb.append(new String(data, 0, len, "utf-8"));
resp.close();
result = sb.toString();
//System.out.println(result);
} catch (ClientProtocolException e) {
logger.error("postFile,不支持http协议", e);
} catch (IOException e) {
logger.error("postFile数据传输失败", e);
}
System.out.println(result);
//将字符串转换成jsonObject对象
JSONObject jsonObject = JSONObject.fromObject(result);
String media_id = jsonObject.getString("media_id");
return media_id;
}
}94ac
>
参考代码:点击打开链接
Java代码:
//获取token,调微信接口--上传图片到永久素材库
String accessToken = "";
String url = "https://api.weixin.qq.com/cgi-bin/material/add_material?type=image&access_token=" + accessToken;
String media_id = WxUploadImage.postFile(url, 图片的绝对路径);
调用工具类:
public class WxUploadImage {
private final static Logger logger = Logger.getLogger(SettingPushController.class);
/*
* 调微信接口上传永久图片
*/
public static String postFile(String url, String filePath) throws IOException {
File file = new File(filePath);
if (!file.exists()) {
throw new IOException("文件不存在");
}
String result = null;
try {
URL url1 = new URL(url);
// 连接
HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
/**
* 设置关键值
*/
conn.setConnectTimeout(5000);
conn.setReadTimeout(30000);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false); // post方式不能使用缓存
conn.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式
// 设置请求头信息
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Cache-Control", "no-cache");
// 设置边界
String boundary = "-----------------------------" + System.currentTimeMillis();
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
// 请求正文信息
OutputStream output = conn.getOutputStream();
output.write(("--" + boundary + "\r\n").getBytes());
output.write(
String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"\r\n", file.getName())
.getBytes());
output.write("Content-Type: image/jpeg \r\n\r\n".getBytes());
byte[] data = new byte[1024];
int len = 0;
FileInputStream input = new FileInputStream(file);
while ((len = input.read(data)) > -1) {
output.write(data, 0, len);
}
output.write(("\r\n--" + boundary + "\r\n\r\n").getBytes());
output.flush();
output.close();
input.close();
InputStream resp = conn.getInputStream();
StringBuffer sb = new StringBuffer();
while ((len = resp.read(data)) > -1)
sb.append(new String(data, 0, len, "utf-8"));
resp.close();
result = sb.toString();
//System.out.println(result);
} catch (ClientProtocolException e) {
logger.error("postFile,不支持http协议", e);
} catch (IOException e) {
logger.error("postFile数据传输失败", e);
}
System.out.println(result);
//将字符串转换成jsonObject对象
JSONObject jsonObject = JSONObject.fromObject(result);
String media_id = jsonObject.getString("media_id");
return media_id;
}
}94ac
>
参考代码:点击打开链接
相关文章推荐
- java开发微信上传永久视频素材接口开发
- 微信开发-----微信公众号调用微信上传图片接口
- 公众号开发-下载图片并上传到微信素材库
- 调用微信网页开发接口上传图片
- [置顶] 微信JSSDK开发(分享接口和上传图片接口)
- ThinkPHP微信开发实例——JSSDK图像接口上传下载并将图片流写入本地
- 【微信开发笔记】微信开发 多图片上传接口异常日志
- 微信上传永久素材接口开发(一)
- 微信web开发的上传图片js接口
- 微信上传永久素材接口开发(二)
- 微信开发之调起摄像头、本地展示图片、上传下载图片实例
- java开发微信上传服务器素材接口开发
- 微信小程序开发之图片上传+服务端接收教程
- 微信图像接口:拍照或从手机相册中选图接口chooseImage+预览图片接口previewImage+上传图片接口uploadImage+下载图片接口downloadImage
- [转]微信小程序开发(二)图片上传+服务端接收
- jqueyr开发实现公众号上传永久视频页面--微信开发素材管理4
- 【微信开发学习笔记(二)】:上传图片后显示不了
- PHP--解决微信小程序上传图片(wx.uploadFile)接口代码
- 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
- thinkphp微信开发之jssdk图片上传并下载到本地服务器