微信上传素材util

可以自己抽成枚举方法
public class WeChatMaterialUtil {public static Logger logger = LoggerFactory.getLogger(WeChatMaterialUtil.class);public static RedisApi redisApi = SpringUtil.getBean(RedisApi.class);public static WechatConfig wechatConfig = SpringUtil.getBean(WechatConfig.class);public static EnvConfig envConfig = SpringUtil.getBean(EnvConfig.class);/*** 给微信发送素材* 新增临时素材** @param imageUrl* @return* @throws Exception*/public static String createFileMaterial(String imageUrl) throws Exception {String access_token = WechatApi.access_token(redisApi, wechatConfig.getAppid(), wechatConfig.getSecret());logger.info("access_token--->{}", access_token);File file = new File(envConfig.getBasepath() + imageUrl);String typeImage = "image";String url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=" + access_token + "&type=" + typeImage;String resp = HttpUtil.httpRequest(url, file);logger.info("新增临时素材数据--->{}", resp);return resp;}/*** 给微信发送素材,* 新增永久素材** @param imageUrl* @return* @throws Exception*/public static String createEiKyFileMaterial(String imageUrl) throws Exception {String access_token = WechatApi.access_token(redisApi, wechatConfig.getAppid(), wechatConfig.getSecret());logger.info("access_token--->{}", access_token);File file = new File(envConfig.getBasepath() + imageUrl);String typeImage = "image";String url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=" + access_token + "&type=" + typeImage;String resp = HttpUtil.httpRequest(url, file);logger.info("新增永久素材数据--->{}", resp);return resp;}/*** 删除永久素材** @param media_id* @return* @throws Exception*/public static String deleteEiKyFileMaterial(String media_id) throws Exception {String access_token = WechatApi.access_token(redisApi, wechatConfig.getAppid(), wechatConfig.getSecret());String url = "https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=" + access_token;Map<String, Object> param = new HashMap<>(1);param.put("media_id", media_id);String resp = HttpUtil.closeHttpPost(url, JSONObject.toJSONString(param));logger.info("删除永久素材数据--->{}", resp);return resp;}/*** 获取永久素材** @param media_id* @return* @throws Exception*/public static String getEiKyFileMaterial(String media_id) throws Exception {String access_token = WechatApi.access_token(redisApi, wechatConfig.getAppid(), wechatConfig.getSecret());String url = "https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=" + access_token;Map<String, Object> param = new HashMap<>(1);param.put("media_id", media_id);String resp = HttpUtil.closeHttpPost(url, JSONObject.toJSONString(param));logger.info("获取永久素材数据--->{}", resp);return resp;}/*** @param url      永久素材 : https://api.weixin.qq.com/cgi-bin/material/add_material*                 临时素材 : https://api.weixin.qq.com/cgi-bin/media/upload* @param type     媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)* @param imageUrl media   是   form-data中媒体文件标识,有filename、filelength、content-type等信息* @return* @throws Exception*/public static String createMaterial(String url, String type, String imageUrl) throws Exception {String access_token = WechatApi.access_token(redisApi, wechatConfig.getAppid(), wechatConfig.getSecret());logger.info("access_token--->{}", access_token);File file = new File(envConfig.getBasepath() + imageUrl);url = url + "?access_token=" + access_token + "&type=" + type;String resp = HttpUtil.httpRequest(url, file);logger.info("给微信发送素材数据--->{}", resp);return resp;}}

httpUtil

public class HttpUtil {public static Logger logger = LoggerFactory.getLogger(HttpUtil.class);/*** @param requestUrl 微信上传临时素材的接口url* @param file       要上传的文件* @return String  上传成功后,微信服务器返回的消息* @desc :微信上传素材的请求方法*/public static String httpRequest(String requestUrl, File file) {StringBuffer buffer = new StringBuffer();try {//1.建立连接URL url = new URL(requestUrl);HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();  //打开链接//1.1输入输出设置httpUrlConn.setDoInput(true);httpUrlConn.setDoOutput(true);httpUrlConn.setUseCaches(false); // post方式不能使用缓存//1.2设置请求头信息httpUrlConn.setRequestProperty("Connection", "Keep-Alive");httpUrlConn.setRequestProperty("Charset", "UTF-8");//1.3设置边界String BOUNDARY = "----------" + System.currentTimeMillis();httpUrlConn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);// 请求正文信息// 第一部分://2.将文件头输出到微信服务器StringBuilder sb = new StringBuilder();sb.append("--"); // 必须多两道线sb.append(BOUNDARY);sb.append("\r\n");sb.append("Content-Disposition: form-data;name=\"media\";filelength=\"" + file.length()+ "\";filename=\"" + file.getName() + "\"\r\n");sb.append("Content-Type:application/octet-stream\r\n\r\n");byte[] head = sb.toString().getBytes("utf-8");// 获得输出流OutputStream outputStream = new DataOutputStream(httpUrlConn.getOutputStream());// 将表头写入输出流中:输出表头outputStream.write(head);//3.将文件正文部分输出到微信服务器// 把文件以流文件的方式 写入到微信服务器中DataInputStream in = new DataInputStream(new FileInputStream(file));int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {outputStream.write(bufferOut, 0, bytes);}in.close();//4.将结尾部分输出到微信服务器byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线outputStream.write(foot);outputStream.flush();outputStream.close();//5.将微信服务器返回的输入流转换成字符串InputStream inputStream = httpUrlConn.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String str = null;while ((str = bufferedReader.readLine()) != null) {buffer.append(str);}bufferedReader.close();inputStreamReader.close();// 释放资源inputStream.close();httpUrlConn.disconnect();} catch (IOException e) {System.out.println("发送POST请求出现异常!" + e);e.printStackTrace();}return buffer.toString();}public static String sendPostRequest(String url, HttpMethod method, org.springframework.http.HttpEntity<Map<String, Object>> httpEntity) {RestTemplate restTemplate = new RestTemplate();ResponseEntity<String> response = restTemplate.exchange(url, method, httpEntity, String.class);return response.getBody();}/*** http请求工具类,post请求** @param url   url* @param param 参数值 仅支持String* @return* @throws Exception*/public static String closeHttpPost(String url, String param) throws IOException, PassportException {CloseableHttpClient client = null;BufferedReader bufferedReader = null;InputStreamReader inputStreamReader = null;try {client = HttpClients.createDefault();HttpPost httpPost = new HttpPost(url);logger.info("请求域名:{}", url);httpPost.setHeader("Content-Type", "application/json;charset=utf-8");if (StringUtils.isNotBlank(param)) {System.out.println("参数值:" + param);HttpEntity httpEntity = new StringEntity(param, "utf-8");httpPost.setEntity(httpEntity);}HttpResponse httpResponse = client.execute(httpPost);if (httpResponse.getStatusLine().getStatusCode() != 200) {String errorLog = "请求失败,errorCode:" + httpResponse.getStatusLine().getStatusCode();logger.info(errorLog);throw new PassportException(url + errorLog);}//读取返回信息String output;inputStreamReader = new InputStreamReader(httpResponse.getEntity().getContent(), "utf-8");bufferedReader = new BufferedReader(inputStreamReader);StringBuilder stringBuilder = new StringBuilder();while ((output = bufferedReader.readLine()) != null) {stringBuilder.append(output);}logger.info("返回值:" + stringBuilder.toString());return stringBuilder.toString();} catch (IOException e) {e.printStackTrace();throw e;} finally {if (client != null) {client.close();}if (bufferedReader != null) {bufferedReader.close();}if (inputStreamReader != null) {inputStreamReader.close();}}}}

Java 微信图片上传素材管理相关推荐

  1. java 微信图片上传_微信小程序图片上传java端以及前端实现

    小程序的图片上传与传统的图片上传方式有一些不一样 如果你有幸看到这篇文章,恭喜你,你可以完美解决了. 话不多说,前后端代码一并奉上: (基于springmvc ) @Controller @Reque ...

  2. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 如果不知道如何上传 ...

  3. 微信发送图片php,PHP怎么实现微信图片上传到服务器?

    这篇文章主要介绍了PHP实现微信图片上传到服务器的方法,涉及php基于curl操作图片文件的相关实现技巧,需要的朋友可以参考下 本文实例讲述了PHP实现微信图片上传到服务器的方法.分享给大家供大家参考 ...

  4. Java实现图片上传到服务器

    Java实现图片上传到服务器 #这几天研究图片上传到服务器并回显到页面遇到了问题,在这里总结一下!希望对各位有用!!! 先上代码 jsp代码: <form id="myform&quo ...

  5. java的图片上传与前端展示实例(Servlet+Jsp)

    java的图片上传与前端展示实例(Servlet+Jsp) 内容前瞻 1.关于路径 2.前端图片上传与展示 3.后台获取并保存 环境 1.前端jsp 2.服务器tomcat 3.服务端servlet ...

  6. 微信图片上传,遇到一个神奇的jgp

    微信图片上传,获取图片base64遇到一个神奇的   jgp var imgFn = function (event) {event.preventDefault();var id = '#'+$(t ...

  7. PHPMySQL图片上传及管理

    PHP&MySQL图片上传及管理 图片上传 HTML表单代码 <form action="uploadpic.php" method="post" ...

  8. android点击加号,Android仿微信图片上传带加号且超过最大数隐藏功能

    1.仿照微信空间上传图片,显示图片数量以及超过最大,上传按钮隐藏功能 2.上效果图 3.上代码,主要是Adapter类 /** * Created by zhangyinlei on 2018/3/2 ...

  9. java公众号上传素材及发送图文消息实现

    微信公众号先上传素材,再推送消息java代码实现: 首先公众号的图文消息是可以登录公众号,然后去管理--素材管理  下面去手动添加图文,图片,视频,音乐素材的.这样添加的素材属于永久素材. 用java ...

  10. php利用七牛云的对象存储完成图片上传-高效管理图片(用php搭建一个自己的图床) nice!!!

    在搭建个人博客时,大家都会买一台云服务器.可是图片的存放一直是一个问题,这里分享一个免费的第三方平台对象存储-七牛云.大家可以把图片上传到七牛云的对象存储,大大节约服务器的压力. 首先,大家在使用七牛 ...

最新文章

  1. VScode 结局插件prettier和vetur格式化冲突
  2. 【招聘(南京)】南京纳龙科技有限公司招高级.net开发工程师
  3. 手机访问服务器中的数据库文件,手机连接服务器数据库文件在哪里
  4. 安卓学习笔记02:测试安卓开发环境
  5. linux 文件系统管理
  6. 权重的叠加(HTML、CSS)
  7. Android MVP开发模式及Retrofit + RxJava封装
  8. Mac pro上IDEA调整字体大小
  9. Ubuntu18.04之星际译王及辞典
  10. oracle----删除数据
  11. Linux中的ls命令详细使用
  12. cocos2dx box2d使用(一)
  13. 读书笔记 摘自:《斯坦福极简经济学》
  14. IReport导出PDF字体加粗失效
  15. Word中参考文献导入Endnote
  16. mac怎么无线打印机连接到服务器,Mac连接打印机的方法
  17. 对冲基金小镇 鬼城_未来系统,代码寿命和网络鬼城
  18. 乱码文件删除不了的解决方法(需要everyone权限)
  19. 鸿蒙申请入口联系人邮箱格式不对,为什么appid输入邮箱地址不对
  20. Simulink仿真WiFi信号

热门文章

  1. 大数据高薪职位必备:Hadoop求职者的6大攻略
  2. 计算机无法识别出硬件,电脑检测不到硬盘,电脑硬件故障检测工具
  3. 经典谢幕千千静听(最终版本)7.0.4 去广告增强版下载
  4. Java学习笔记——Character类
  5. bochs运行xp_bochs xp镜像完整免费版
  6. 内容安全策略(content-security-policy)
  7. 一级标题段前段后一行设置方法
  8. 宋词10家--一人一首成名曲
  9. 【EXLIBRIS】#小词旮旯# 000 初衷
  10. 微信小程序加入购物车动画