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<String, Object> 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图片上传到微信!!
诸多不完善之处,敬请指正!
相关推荐
总结来说,微信小程序中的Base64加解密主要依赖于微信小程序提供的API,如`wx.base64ToArrayBuffer()`和`wx.arrayBufferToBase64()`,结合ArrayBuffer对象进行操作。在实际开发中,我们需要根据具体的需求选择合适的...
在微信小程序中,Base64通常用于将二进制数据(如图片、音频)转化为可以在网络上直接传输的文本格式。`utils`文件夹可能包含一个名为`base64.js`的工具类,提供了Base64编码和解码的函数。例如: ```javascript //...
有朋友问, 微信小程序require ('base64.js')文件时,会失败,,, # 分析 事实上,微信小程序require很多JS模块都有不兼容现象。。。先从base64.js这个模块入手吧。 调试出错点: ~~~~ (function(global) { 'use ...
Java 实现上传网络图片到微信临时素材 在本文中,我们将详细介绍如何使用 Java 语言实现上传网络图片到微信临时素材。微信临时素材是指微信服务器上的一种临时存储形式,通过上传图片到微信临时素材,我们可以在...
本程序在微信小程序开发工具中已经测试通过。 Base64代码: [javascript] view plain copy print? (function(){ var BASE64_MAPPING = [ 'A','B','C','D','E','F','G','H 免责声明:本站所有文章和图片均来自...
在微信小程序中,图片转base64是一种常见的需求,它主要应用于图片的上传、预览或者数据传输。Base64是一种编码方式,可以将二进制数据转化为可打印的ASCII字符,便于在网络上传输。接下来,我们将深入探讨微信小...
微信开放平台扫码登陆解析处理工具,将frame数据处理为图片或Base64图片数据返回客户端进行扫码。解决Chrome70中open.weixin.qq.com腾讯SSL证书不被信任的问题,解决Chrome68中frame跨域被拦截的问题。
在微信小程序中,当需要在网络上传输非ASCII字符,例如图片或PDF等二进制文件时,通常会先将其转化为Base64字符串。Base64编码将每3个字节的数据转换成4个可打印字符,这样可以保证数据在传输过程中不被破坏。在微信...
在这个“微信小程序java上传图片_servlet”项目中,我们将探讨如何在微信小程序中实现图片上传功能,并通过Java Servlet进行后端处理。 首先,微信小程序提供了wx.chooseImage接口,用户可以通过这个接口选择本地...
微信开发 Java SDK,支持微信支付、开放平台、公众号、企业号/企业微信、小程序等的后端开发 微信开发 Java SDK,支持微信支付、开放平台、公众号、企业号/企业微信、小程序等的后端开发 微信开发 Java SDK,支持...
生成的Base64字符串可以直接设置为图片源(`<image>` 组件的 `src` 属性),在小程序中显示出来。 此外,理解这个插件的工作原理也很重要。它可能使用了一些二维码编码算法,如QR Code Model 2,将输入的数据编码为...
Java微信开发入门,主要介绍大微信公众号介绍、开发这环境的一个搭建、发送消息自定回复、企业实战中的微信开发
微信小程序提供了丰富的API接口,其中包括对图片、视频等多媒体内容的预览功能,但对于PDF文件的直接支持并不完善。因此,开发者通常需要通过以下步骤来实现: 1. **获取Base64编码的PDF**:首先,你需要通过服务器...
微信开发完整java项目基于SSM微信公众号项目开发SpringMyBatisSpringMVC微信开发完整java项目基于SSM微信公众号项目开发SpringMyBatisSpringMVC微信开发完整java项目基于SSM微信公众号项目开发SpringMyBatis...
java本科毕业设计共享记账微信小程序java本科毕业设计共享记账微信小程序java本科毕业设计共享记账微信小程序java本科毕业设计共享记账微信小程序java本科毕业设计共享记账微信小程序java本科毕业设计共享记账微信小...
微信公众平台java开发详解 pdf 微信开发者模式 开发详解,web端及手机端开发详解
对接微信接口中因为jdk8解密长度不够 报错 java.security.InvalidKeyException: Illegal key size 替换路径:(记得备份原有的文件) C:\Program Files\Java\jdk1.8.0_131\jre\lib\security
import {Base64} from '../../utils/base64' nickName = Base64.encode(nickName); //加密 console.log('nickNameEncoded'+nickName); // nickName = Base64.decode(nickName);//解密 // console.log('解密'+...
本实例将详细讲解基于Java语言的微信企业号开发,包括JSSDK的使用、access_token的获取与刷新、ticket的管理、OAuth认证以及媒体文件的上传下载、通讯录管理和菜单自定义等功能。 1. **JSSDK**:JavaScript SDK是...
java后台向微信端发送信息,上传图片,上传素材,其中需要自己拼接token,微信接口的url,其中包括图文素材content上传html格式的处理代码