`
it_cailiao
  • 浏览: 1435 次
  • 来自: 北京
社区版块
存档分类
最新评论

微信开发☞Java上传Base64图片

阅读更多
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加解密

    总结来说,微信小程序中的Base64加解密主要依赖于微信小程序提供的API,如`wx.base64ToArrayBuffer()`和`wx.arrayBufferToBase64()`,结合ArrayBuffer对象进行操作。在实际开发中,我们需要根据具体的需求选择合适的...

    微信小程序base64 Aes加解密

    在微信小程序中,Base64通常用于将二进制数据(如图片、音频)转化为可以在网络上直接传输的文本格式。`utils`文件夹可能包含一个名为`base64.js`的工具类,提供了Base64编码和解码的函数。例如: ```javascript //...

    微信小程序require 引用 BASE64.JS 失败问题的分析解决

    有朋友问, 微信小程序require ('base64.js')文件时,会失败,,, # 分析 事实上,微信小程序require很多JS模块都有不兼容现象。。。先从base64.js这个模块入手吧。 调试出错点: ~~~~ (function(global) {  'use ...

    java实现上传网络图片到微信临时素材

    Java 实现上传网络图片到微信临时素材 在本文中,我们将详细介绍如何使用 Java 语言实现上传网络图片到微信临时素材。微信临时素材是指微信服务器上的一种临时存储形式,通过上传图片到微信临时素材,我们可以在...

    javascript/微信小程序中将String进行Base64编码并UTF-8格式输出

    本程序在微信小程序开发工具中已经测试通过。 Base64代码: [javascript] view plain copy print? (function(){ var BASE64_MAPPING = [ 'A','B','C','D','E','F','G','H 免责声明:本站所有文章和图片均来自...

    微信小程序-图片转base64

    在微信小程序中,图片转base64是一种常见的需求,它主要应用于图片的上传、预览或者数据传输。Base64是一种编码方式,可以将二进制数据转化为可打印的ASCII字符,便于在网络上传输。接下来,我们将深入探讨微信小...

    微信开放平台扫码登陆解析处理工具将frame数据处理为图片或Base64图片数据返回客户端进行扫码

    微信开放平台扫码登陆解析处理工具,将frame数据处理为图片或Base64图片数据返回客户端进行扫码。解决Chrome70中open.weixin.qq.com腾讯SSL证书不被信任的问题,解决Chrome68中frame跨域被拦截的问题。

    微信小程序base64加密,AES加密

    在微信小程序中,当需要在网络上传输非ASCII字符,例如图片或PDF等二进制文件时,通常会先将其转化为Base64字符串。Base64编码将每3个字节的数据转换成4个可打印字符,这样可以保证数据在传输过程中不被破坏。在微信...

    微信小程序java上传图片_servlet

    在这个“微信小程序java上传图片_servlet”项目中,我们将探讨如何在微信小程序中实现图片上传功能,并通过Java Servlet进行后端处理。 首先,微信小程序提供了wx.chooseImage接口,用户可以通过这个接口选择本地...

    微信开发 Java SDK.zip

    微信开发 Java SDK,支持微信支付、开放平台、公众号、企业号/企业微信、小程序等的后端开发 微信开发 Java SDK,支持微信支付、开放平台、公众号、企业号/企业微信、小程序等的后端开发 微信开发 Java SDK,支持...

    微信小程序生成二维码的插件,基于base64编码输出二维码,不依赖canvas.zip

    生成的Base64字符串可以直接设置为图片源(`&lt;image&gt;` 组件的 `src` 属性),在小程序中显示出来。 此外,理解这个插件的工作原理也很重要。它可能使用了一些二维码编码算法,如QR Code Model 2,将输入的数据编码为...

    Java微信开发教程

    Java微信开发入门,主要介绍大微信公众号介绍、开发这环境的一个搭建、发送消息自定回复、企业实战中的微信开发

    小程序预览base64 码的pdf

    微信小程序提供了丰富的API接口,其中包括对图片、视频等多媒体内容的预览功能,但对于PDF文件的直接支持并不完善。因此,开发者通常需要通过以下步骤来实现: 1. **获取Base64编码的PDF**:首先,你需要通过服务器...

    微信开发完整java项目基于SSM微信公众号项目开发SpringMyBatisSpringMVC

    微信开发完整java项目基于SSM微信公众号项目开发SpringMyBatisSpringMVC微信开发完整java项目基于SSM微信公众号项目开发SpringMyBatisSpringMVC微信开发完整java项目基于SSM微信公众号项目开发SpringMyBatis...

    java本科毕业设计共享记账微信小程序.zip

    java本科毕业设计共享记账微信小程序java本科毕业设计共享记账微信小程序java本科毕业设计共享记账微信小程序java本科毕业设计共享记账微信小程序java本科毕业设计共享记账微信小程序java本科毕业设计共享记账微信小...

    微信公众平台java开发详解

    微信公众平台java开发详解 pdf 微信开发者模式 开发详解,web端及手机端开发详解

    微信支付接口 java.security.InvalidKeyException: Illegal key size

    对接微信接口中因为jdk8解密长度不够 报错 java.security.InvalidKeyException: Illegal key size 替换路径:(记得备份原有的文件) C:\Program Files\Java\jdk1.8.0_131\jre\lib\security

    微信小程序base64编码,解决传递中文乱码问题

    import {Base64} from '../../utils/base64' nickName = Base64.encode(nickName); //加密 console.log('nickNameEncoded'+nickName); // nickName = Base64.decode(nickName);//解密 // console.log('解密'+...

    微信企业号开发实例(java版)

    本实例将详细讲解基于Java语言的微信企业号开发,包括JSSDK的使用、access_token的获取与刷新、ticket的管理、OAuth认证以及媒体文件的上传下载、通讯录管理和菜单自定义等功能。 1. **JSSDK**:JavaScript SDK是...

    java后台向微信端发送信息,上传图片,上传素材

    java后台向微信端发送信息,上传图片,上传素材,其中需要自己拼接token,微信接口的url,其中包括图文素材content上传html格式的处理代码

Global site tag (gtag.js) - Google Analytics