微信上传临时素材|微信公众号发送图片

项目场景:用户扫码(带场景值)关注后推送一段文字再加上一张图片(待判定);
图片来源:读取项目下的图片
工具:WxMpService-----这是一个好东西 调用微信接口有他就不愁
导入方式 maven下

<dependency>
  <groupId>me.chanjar</groupId>
  <artifactId>weixin-java-mp</artifactId>
  <version>1.3.3</version>
</dependency>

推送事件
首先。调用客服接口发送文字,其次调用方法发送图片


    private WxMpXmlOutMessage handleSpecial(WxMpXmlMessage wxMessage, WxMpService weixinService) throws Exception {
        String text = "";
            try {
                text = "****************" ;
              weixinService.getKefuService().sendKefuMessage(WxMpKefuMessage.TEXT().toUser(wxMessage.getFromUser()).content
                    (text).build());
            } catch (Exception e) {
                this.logger.error(e.getMessage(), e);
            }
            //  调用发送图片 方法
            return returenImage(wxMessage, weixinService);
    }

图片发送方法
读取项目下文件,为了打包成jar包后能够继续使用,因此不能使用Flie类,只能读取成流
其中微信接口中
type 是 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
media 是 文件的后缀 如下".jpg"

下面逻辑当然是乱写的 但是上传和发送的方法是对的

private WxMpXmlOutMessage returenImage(WxMpXmlMessage wxMessage, WxMpService weixinService) {
        InputStream logo = this.getClass().getClassLoader().getResourceAsStream("static/images/test.jpg");
        try {
            result = wxMpService.getMaterialService().mediaUpload(WxConsts.MaterialType.IMAGE,
                ".jpg", logo);
        } catch (WxErrorException e) {
            this.logger.error("上传错误:" + e.getMessage(), e);
            e.printStackTrace();
        }
       return new ImageBuilder().build(result.getMediaId(), wxMessage, weixinService);
    }

上面是获取jar包中的素材 有时候我们需要获取网络的素材就可以这样做

private WxMpXmlOutMessage returenImage(WxMpXmlMessage wxMessage, WxMpService weixinService) {
        URL url = null;
        HttpURLConnection conn = null;
        InputStream inStream = null;
        WxMediaUploadResult result = null;
        try {
            //new一个URL对象
            url = new URL("http://qiniu-public.***********/029502df3963467b601e2bcc7698161.jpg");
            //打开链接
            conn = (HttpURLConnection) url.openConnection();
            //设置请求方式为"GET"
            conn.setRequestMethod("GET");
            //超时响应时间为5秒
            conn.setConnectTimeout(5 * 1000);
            //通过输入流获取图片数据
            inStream = conn.getInputStream();
            result = wxMpService.getMaterialService().mediaUpload(WxConsts.MaterialType.IMAGE, ".jpg", inStream);
        } catch (IOException e) {
            this.logger.error("获取错误:" + e.getMessage(), e);
            e.printStackTrace();
        } catch (WxErrorException e) {
            this.logger.error("上传错误:" + e.getMessage(), e);
            e.printStackTrace();
        }
        return result != null ? (new ImageBuilder().build(result.getMediaId(), wxMessage, weixinService)) : null;
    }

PS:如有不懂,可以留言评论或者私信告知,如果感觉帮到你了,麻烦点个赞,你的鼓励是我最大的动力。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值