java 微信开发图片发送,微信开发?Java上传Base64图片

2023-11-02

class="java">import org.apache.commons.codec.binary.Base64;

import org.apache.log4j.LogManager;

import org.apache.log4j.Logger;

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStream;

/**

* 文件处理工具类

*/

public class FileHelpers {

private static final Logger logger = LogManager.getLogger(FileHelpers.class);

/**

* 解析base64格式图片,并保存到临时目录

*

* @param base64Str base64格式图片

* @param file 临时文件对象

* @return File Object

* @throws Exception

*/

public static void decodeBase64ToFile(File file,String base64Str) throws Exception {

OutputStream out = null;

try {

int prefixIndex = base64Str.indexOf(",");

byte[] buffer = Base64.decodeBase64(base64Str.substring(prefixIndex + 1));

out = new FileOutputStream(file);

out.write(buffer);

out.flush();

} catch (Exception e) {

logger.debug("decodeBase64ToFile raise exception:" + e.getMessage());

throw new Exception(e.getMessage());

} finally {

if (out!=null) {

out.close();

}

}

}

}

/*********************************************/

import org.apache.http.HttpEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.client.utils.HttpClientUtils;

import org.apache.http.entity.mime.MultipartEntityBuilder;

import org.apache.http.entity.mime.content.FileBody;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.util.EntityUtils;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

import java.io.File;

import java.util.Map;

public class WeixinMediaUtils {

private final Logger logger = LogManager.getLogger(ServiceWeixinMedias.class);

/**

* 卡券 上传图片接口

*

* @param accessToken 开放平台/或者公众平台的accessToken

* @param imgStream 图片base64字符串

* @return 上传成功后,返回的图片Url

*/

public static Map uploadimg(String accessToken, String imgStream) {

File tempFile = null;

CloseableHttpClient httpClient = null;

CloseableHttpResponse response = null;

try {

String url = String.format("%s%s",

"https://api.weixin.qq.com/cgi-bin/media/uploadimg",

"ACCESS_TOKEN="+accessToken))

);

tempFile = File.createTempFile("weixin_media", ".jpg");

FileHelpers.decodeBase64ToFile(tempFile, imgStream);

HttpPost httpPost = new HttpPost(url);

FileBody fileBody = new FileBody(tempFile);

HttpEntity httpEntity = MultipartEntityBuilder.create().addPart("buffer", fileBody).build();

httpPost.setEntity(httpEntity);

httpClient = HttpClients.createDefault();

response = httpClient.execute(httpPost);

HttpEntity responseEntity = response.getEntity();

if (responseEntity != null) {

String responseEntityStr = EntityUtils.toString(response.getEntity());

System.out.println(responseEntityStr);

System.out.println("Response content length: " + responseEntity.getContentLength());

return JsonHelpers.deserializeToMap(responseEntityStr).orElseThrow(() -> new Exception("uploadimg failed,response realizeToMap raise Exception"));

} else {

throw new Exception(String.format("call weixin interface fail,file 【%s】 upload fail", tempFile.getAbsolutePath()));

}

} catch (Throwable t) {

t.printStackTrace();

throw new Exception(t.getMessage());

} finally {

if (tempFile!=null) {

tempFile.delete();

}

if (httpClient!=null) {

HttpClientUtils.closeQuietly(httpClient);

}

if (response!=null) {

HttpClientUtils.closeQuietly(response);

}

}

}

? ? Java使用HttpClient,将Base64图片上传到微信!!

? ? 诸多不完善之处,敬请指正!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 微信开发图片发送,微信开发?Java上传Base64图片 的相关文章

  • Helm使用

    Helm 基本概念 Helm 可以理解为 Kubernetes 的包管理工具 可以方便地发现 共享和使用为Kubernetes构建的应用 它包含几个基本概念 Chart 一个 Helm 包 其中包含了运行一个应用所需要的镜像 依赖和资源定义
  • java jhat_java查看工具jhat-windows

    stack false trueTurns off tracking object allocation call stack If allocation site information is not available in the h
  • 问题 E: 栈操作的正确性

    题目描述 对输入序列执行一组栈操作 判断操作是否正确 输入 每行是一个测试用例 表示一个操作序列 操作序列由P和Q两个符号组成 P表示入栈 Q表示出栈 操作序列长度不超过1000 输出 对每个操作序列 若操作序列正确 即操作结束时栈中刚好为
  • 发生交通事故交强险、残疾赔偿金怎么赔?法官列出明细

    2021年9月8日 甲驾驶A车与乙驾驶B车在某路口发生碰撞造成甲受伤及车辆受损的交通事故 经公安交警部门认定 乙负事故全部责任 甲无责 B车在C保险公司处投保交强险 甲治疗终结后 于2022年10月15日经鉴定构成九级伤残和十级伤残 因协商
  • 计算机机房一般在几楼,电梯机房一般在几楼 设备层属于公摊吗

    高楼层的电梯配置都会设有电梯设备层 电梯房设备层一般在几楼 这个要楼层的总高 一般在最顶层或者最底层 但是总楼层比较高 在二十层以上的 一般都有多个电梯房设备层 电梯房设备层设置要点 电梯房设备层主要管理整个楼层的电梯运行 还有一些其他安全
  • leetcode 1. 两数之和

    给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 target 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不能重复出现 你可以按任意顺
  • EventBus报错:its super classes have no public methods with the @Subscribe annotation

    看源码得知 其注解方法为空 则在当前类或者父类中 没有接收event发送的消息 所以在收到回调的方法中添加如下注解方法 Subscribe threadMode ThreadMode MAIN public void onCollectio
  • 递归模板

    Java public void recur int level int param terminator if level gt MAX LEVEL process result return process current logic
  • Java基础学习过程中出现的错误:

    1 java获得访问者ip 获得的值是ip 0 0 0 0 0 0 0 1 原因 本机地址获取为IPV6的IP 这现象只有在服务器和客户端都在同一台电脑内上才会出现 例如用localhost访问的容时候才会出现 其实作怪的是hosts文件
  • pandas中的Series对象

    Series和DataFrame是pandas中最常用的两个对象 1 可以用Numpy的数组处理函数直接对Series对象进行处理 2 支持使用位置存取元素 使用索引标签作为下标存取元素 每个Series对象实际上都是由两个数组组成 1 i
  • CPU指令集介绍

    1 什么是指令集 参考 http product pconline com cn itbk bjbzj notebook 1109 2522116 html 所谓指令集 就是CPU中用来计算和控制计算机系统的一套指令的集合 而每一种新型的C
  • Model/View开发小结

    老猿Python博文目录 专栏 使用PyQt开发图形界面Python应用 老猿Python博客地址 Model View开发是PyQt和Qt中重要的框架之一 老猿认为另外两个就是信号槽机制和事件机制 这三个是最能体现PyQt和Qt开发特色的
  • 货舱容量分配问题

    4 选做 一架货机有三个货舱 前舱 中舱和后舱 三个货舱所能装载的 货物的最大重量和体积有限制 如表 3 所示 现有四类货物用该货机进行装运 货物的规格以及装运后获得的利润如表 4 所示 并且为了飞机的平衡 三个货 舱装载的货物重量必须与其
  • 最近读了《软件调试的艺术》这本书

    最近读了 软件调试的艺术 这本书 英文名
  • mysql报错Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

    今天在安装mysql后 启动时候没有启动成功 查看了下日志报错如下 root localhost local less var log mysqld log 1 查看报错信息如下 ERROR Fatal error Can t open a
  • LaTeX在论文写作中的常用命令(二)

    在进行数学类论文 尤其是数学建模论文写作时 经常会用到的LaTeX命令如下 1 图片引用 The curve is shown in textbf Figure ref fig 1 图片插入 width 为图片宽度 height为图片宽度
  • 【Vue基础】什么是跨域?如何解决跨域问题?浅浅了解一下什么是登录鉴权

    1 什么是跨域 在了解什么是跨域之前 我们首先要了解一个概念 同源策略 同源策略 同源策略 SOP Same Origin Policy 是一种约定 由 Netscape 公司 1995 年引入浏览器 它是浏览器最核心也最基本的安全功能 现
  • 基于全卷积神经网络对中文手写体汉字骨架的提取

    论文题目 Fully Convolutional Network Based Skeletonization for Handwritten Chinese Characters
  • 进制相互转化

    二进制 由0和1组成 逢二进一 借一当二 八进制 由0 7的数字组成 没有小数部分 十进制 由 0 9的数字组成 不能以0开始 十六进制 以0x开头的数字序列 其后由0 9 A F或a f组成 无小数部分 原码 用第一位表示符号 其余位表示

随机推荐