栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【微信开发】7、SpringBoot整合WxJava新增临时、永久素材

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【微信开发】7、SpringBoot整合WxJava新增临时、永久素材

公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。通过本接口,公众号可以新增临时素材(即上传临时多媒体文件)。

1、官方文档

新增临时素材

https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/New_temporary_materials.html

新增永久素材

https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Adding_Permanent_Assets.html
2、基于WxJava实现素材上传
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.material.WxMpMaterial;
import me.chanjar.weixin.mp.bean.material.WxMpMaterialUploadResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.File;

@RestController
@RequestMapping("wx/mp/media")
public class WxMpMediaController {

    @Autowired
    private WxMpService wxMpService;

    
    @GetMapping("uploadTemp")
    public String uploadTemp() throws WxErrorException {
        File file = new File("E:\图片素材\logo.png");
        WxMediaUploadResult wxMediaUploadResult = wxMpService.getMaterialService().mediaUpload(WxConsts.MediaFileType.IMAGE, file);
        return "上传临时素材成功:mediaId:" + wxMediaUploadResult.getMediaId();
    }

    
    @GetMapping("uploadPermanent")
    public String uploadPermanent() throws WxErrorException {
        File file = new File("E:\图片素材\logo.png");
        WxMpMaterial wxMpMaterial = new WxMpMaterial();
        wxMpMaterial.setFile(file);
        wxMpMaterial.setName("logo");
        WxMpMaterialUploadResult wxMpMaterialUploadResult = wxMpService.getMaterialService().materialFileUpload(WxConsts.MediaFileType.IMAGE, wxMpMaterial);
        return "上传永久素材成功:mediaId:" + wxMpMaterialUploadResult.getMediaId();
    }
}

素材分为临时素材和永久素材,临时素材在微信后台保存时间为3天,即3天后media_id失效永久素材数量有上限:图文消息素材、图片素材上限为100000,其他类型为1000永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用,图片将被屏蔽) 3、测试素材上传

1、访问接口上传临时素材:

localhost:8080/wx/mp/media/uploadTemp


上传成功,返回了 mediaId,我们可以用 mediaId 给用户发送消息,在下面会介绍

2、访问接口上传永久素材

localhost:8080/wx/mp/media/uploadPermanent

4、使用上传的素材被动回复用户消息

在前面的文章:【微信开发】4、SpringBoot整合WxJava处理微信消息、事件推送 中提到我们会接收到用户发给公众号的消息,其中包括了事件和消息,当用户给我们发送图片的时候,我们也给用户回复一张图片,伪代码如下:

if (messageType.equals("image")) {
    WxMpXmlOutImageMessage images = WxMpXmlOutMessage.IMAGE()
            // 获取上传到微信服务器的临时素材mediaid.
            .mediaId("Qk_d9_yDnYMakjCQopymJmyXewzIhySCyfcEuPNnYkRjboribry9pj22DHLCAuPt")
            .fromUser(touser)
            .toUser(fromUser)
            .build();
    String result = images.toXml();
    System.out.println("响应给用户的消息:" + result);
    return result;
}

其中 mediaId 为我们上传的素材 mediaId,永久和临时素材都可以,下面我们进行测试:

可以看到,用户发送图片消息给公众号后,公众号成功返回了图片信息,证明我们的素材已经上传成功了

如您在阅读中发现不足,欢迎留言!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777853.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号