企业微信接入系列-上传临时素材

企业微信接入系列-上传临时素材

  • 文档介绍
  • 上传临时素材
  • 写在最后

文档介绍

创建企业群发的文档地址:https://developer.work.weixin.qq.com/document/path/92135,在创建企业群发消息或者群发群消息接口中涉及到上传临时素材的操作,具体文档地址:https://developer.work.weixin.qq.com/document/path/90253,本文主要讲述的就是上传临时素材的操作。

上传临时素材

企业微信官方文档关于上传临时素材这一块的文档和上传附件资源的文档是一样的不是很清楚,这里鉴于上传插件太多的情况,我不针对于具体的一款上传插件举例,通俗化来说明
1.更改上传链接
就是说不管你是什么上传插件,在上传链接这里变更一下,同时注意接收上传方法返回的参数

uploadUrl: '/file/weChatMsgUpload', //上传的地址

2.上传附件资源接口
https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
参数说明
在这里插入图片描述
3.java上传方法

 /*** 群发消息上传* 群发消息上传成功后无法区分文件类型,故需要在上传成功后返回文件类型*/@PostMapping("/file/weChatMsgUpload")@ResponseBodypublic AjaxResult weChatMsgUpload(MultipartFile file){try{WeChatUploadAttachmentResponse res = weChatService.uploadMsg(file);if (res != null) {AjaxResult ajax = AjaxResult.success();ajax.put("fileName", file.getOriginalFilename());ajax.put("url", res.getType()+"@"+res.getMediaId());return ajax;}else {return AjaxResult.error("上传失败!");}}catch (Exception e){return AjaxResult.error(e.getMessage());}}

企业微信上传临时素材接口调用方法

 /*** 上传临时素材--群发消息* https://developer.work.weixin.qq.com/document/path/90253*  素材上传得到media_id,该media_id仅三天内有效*   media_id在同一企业内应用之间可以共享* 媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file)* @param file* @return*/@Overridepublic WeChatUploadAttachmentResponse uploadMsg(MultipartFile file) {//获取accesstokenString accessToken = getAccessToken();if (StringUtils.isNotEmpty(accessToken)) {//获取原始上传文件名称String filename = file.getOriginalFilename();//获取后缀 'jpg','JPG','png','PNG','mp4','MP4'//,'amr','AMR','txt','pdf','PDF','xlx','xlxs','doc','docx'int i = filename.lastIndexOf(".");String substring = filename.substring(i + 1);String mediaType = "";if ("jpg".equals(substring) || "JPG".equals(substring) || "png".equals(substring) || "PNG".equals(substring)) {mediaType = "image";}else if ("mp4".equals(substring) || "MP4".equals(substring)) {mediaType = "video";}else if ("amr".equals(substring) || "AMR".equals(substring)) {mediaType = "voice";}else {mediaType = "file";}//上传临时素材接口地址String url = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token="+accessToken+"&type="+mediaType;//设置请求头信息HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.MULTIPART_FORM_DATA);File file1 = null;try {//设置文件大小int length = file.getBytes().length;headers.setContentLength(length);//设置请求包Content-Disposition  form-data中媒体文件标识ContentDisposition contentDisposition =ContentDisposition.builder("form-data").filename(filename).name("media").build();headers.setContentDisposition(contentDisposition);//MultipartFile 转 Filefile1 = toFile(file);//获取FileSystemResourceFileSystemResource resource = new FileSystemResource(file1);MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();params.add("media", resource);//设置请求包HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);//post调用企业微信上传临时素材接口ResponseEntity<String> post = RestUtils.post(url,requestEntity,String.class);if (Objects.nonNull(post)) {//获取返回值String body = post.getBody();WeChatUploadAttachmentResponse res = JSON.parseObject(body, WeChatUploadAttachmentResponse.class);return res;}}catch (Exception e) {e.printStackTrace();}finally {if (file1 != null) {file1.delete();}}}return null;}//MultipartFile  转 Fileprivate File toFile(MultipartFile multipartFile) {//文件上传前的名称String fileName = multipartFile.getOriginalFilename();File file = new File(fileName);OutputStream out = null;try{//获取文件流,以文件流的方式输出到新文件out = new FileOutputStream(file);byte[] ss = multipartFile.getBytes();for(int i = 0; i < ss.length; i++){out.write(ss[i]);}return file;}catch(IOException e){e.printStackTrace();return null;}finally {if (out != null){try {out.close();} catch (IOException e) {e.printStackTrace();}}}}

返回值对象代码

public class WeChatUploadAttachmentResponse extends WeChatResponse{private static final long serialVersionUID = -6462589895169294923L;@ApiField("type")private String type;@ApiField("media_id")private String mediaId;@ApiField("created_at")private Long createdAt;public String getType() {return type;}public void setType(String type) {this.type = type;}public String getMediaId() {return mediaId;}public void setMediaId(String mediaId) {this.mediaId = mediaId;}public Long getCreatedAt() {return createdAt;}public void setCreatedAt(Long createdAt) {this.createdAt = createdAt;}}

上传插件通过页面返回值取出对应的media_id即可,至此企业微信上传附件资源就算完成了。

写在最后

这里说一下这个企业微信上传临时素材接口,整体操作和上传附件资源接口操作相似,只是官方文档接口地址不一样,这里是最后上传成功的版本,希望对大家有帮助,有问题的小伙伴也可以一起讨论哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络服务DHCP的安装

DHCP的安装 检查并且安装dhcp有关软件包 rpm -qc dhcp #检查是否存在dhcp yum install -y dhcp #进行yum安装查看系统的配置文件 切换到对应目录查看相关文件配置&#xff0c;发现是空目录。 将官方提供的example复制到原配置文件中 cp /usr/share/doc/dhcp-4.2.5/dhcpd.…

什么是室内外一体化定位

室内外一体化定位是一种技术&#xff0c;它允许在室内外环境中对设备或人员进行连续、无缝的定位跟踪。这种技术结合了多种定位技术的优势&#xff0c;以克服单一技术在室内外环境中可能遇到的局限性。 室内外一体化定位通常涉及以下几种技术&#xff1a; 1. 卫星定位系统&am…

手撕C语言题典——相交链表

目录 前言 一&#xff0c;思路 1&#xff09;暴力 2)同步指针 二&#xff0c;代码实现 前言 依旧是力扣上的一道题&#xff0c;有许多新思路提供给我们 160. 相交链表 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/intersection-of-two-linked-li…

Message passing mechanism (消息传递机制)

objc_msgSend 是 Objective-C 运行时系统中的一个核心函数&#xff0c;用于实现消息传递机制。在 Objective-C 中&#xff0c;方法调用实际上是消息传递的过程&#xff0c;当你在代码中调用一个方法时&#xff0c;编译器会将其转换为 objc_msgSend 函数的调用。 objc_msgSend …

构建体育直播平台源码:深度解析数据分析模块的核心展示内容

在现代的体育直播平台中&#xff0c;数据分析展示已经成为不可或缺的一部分。如下参考借助“东莞梦幻网络科技”提供的体育直播源码&#xff0c;打造的平台&#xff0c;并通过表格形式为用户列出以下数据分析内容&#xff1a; 1、积分排名&#xff1a;反映了各支队伍在赛季中的…

做跨境电商一定要测评吗?

不管是做亚马逊还是虾皮、Lazada、ebay、沃尔玛、Ozon、Allegro、敦煌网、Jumia、Falabella、SHEIN、OnBuy、新蛋、Fnac、eMAG、ManoMano、Fruugo、速卖通、阿里国际、煤炉等跨境电商平台&#xff0c;测评都是成本最低且最有效的一种推广方式 并不是说做电商就一定要去测评&am…

护肤品成分大公开

在追求美丽的道路上&#xff0c;护肤品无疑是我们手中的重要武器。而在这众多护肤品中&#xff0c;胶原蛋白这一成分因其独特的功效和作用&#xff0c;受到了广泛的关注和喜爱。今天&#xff0c;就让我们一起走进胶原蛋白的世界&#xff0c;揭开它的神秘面纱。 一、胶原蛋白是什…

React实现在线预览word报告/本地选择报告预览

标题使用的核心技术点是docx-preview&#xff0c;读取到文件的File对象&#xff0c;用File去做文件展示&#xff0c;这里是才用将文件转base64字符串存储到localStorage中 在线预览word报告且包含word样式 下载需要使用的min.js文件进项目的public目录中&#xff08;上zip已包…

shell 终端打印格式化日志 log::info

代码 logging.sh #!/bin/bash NC\033[0m RED\033[31m GREEN\033[32m YELLOW\033[33m BLUE\033[34mlog::err() {printf "[$(date %Y-%m-%dT%H:%M:%S.%2N%z)][${RED}ERROR${NC}] %b\n" "$" }log::info() {printf "[${GREEN}$(date %Y-%m-%dT%H:%M:%S.%…

VB.net实战(VSTO):Excel插件的安装与卸载

1. 安装 1.1编程环境&#xff1a;Visual Studio 2022 1.2创建新项目&#xff1a; 1.3 加入一行测试程序&#xff1a;MsgBox&#xff08;“hello”&#xff09;&#xff0c;点击启动&#xff0c;确认可以弹窗 1.4 点击发布 1.5 找到安装程序&#xff0c;点击安装。打开Excel程…

微信短视频怎么收藏?成都鼎茂宏升文化传媒公司

微信短视频怎么收藏&#xff1f;一文教你轻松掌握 随着微信功能的不断升级&#xff0c;微信短视频已经成为我们日常生活中不可或缺的一部分。无论是朋友分享的生活点滴&#xff0c;还是公众号推送的精彩内容&#xff0c;短视频都以其直观、生动的形式&#xff0c;吸引着我们的…

乡村振兴与脱贫攻坚相结合:巩固拓展脱贫攻坚成果,推动乡村全面振兴,建设更加美好的乡村生活

目录 一、引言 二、巩固拓展脱贫攻坚成果 1、精准施策&#xff0c;确保稳定脱贫 2、强化政策支持&#xff0c;巩固脱贫成果 3、激发内生动力&#xff0c;促进持续发展 三、推动乡村全面振兴 1、加快产业发展&#xff0c;增强乡村经济实力 2、推进乡村治理体系和治理能力…

使用tftpd更新开发板内核

我们升级内核可以通过原厂提供的升级软件来进行&#xff0c;比如瑞芯微的RKDevTool.exe&#xff0c;只不过这种方式必须通过指定的OTG升级口&#xff0c;还得借助按键进入loader模式后才可以。 其实还可以利用一些通用的工具来进行升级&#xff0c;比如tftpd工具。 下载地址p…

C++:栈(stack)、队列(queue)、优先级队列(priority_queue)

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;栈&#xff08;stack&#xff09;和队列&#xff08;queue&#xff09;》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 :map…

MPLAB--读写MCU数据

空工程 Read –Programmer\Read –File\Export, –确定后选择文件位置 & 文件名 Program –File\Import…,选择烧录的文件*.hex –Programmer\Program

如何 Logrus IT 的质量评估门户帮助提升在线商店前端(案例研究)

在当今竞争激烈的电子商务环境中&#xff0c;一个运作良好的在线店面对商业成功至关重要。然而&#xff0c;确保目标受众获得积极的用户体验可能是一项挑战&#xff0c;尤其是在使用多种语言和平台时。Logrus IT的质量评估门户是一个强大的工具&#xff0c;可帮助企业简化内容和…

《python开发》cannot allocate memory in static TLS block-报错问题解决

阿丹&#xff1a; 今天在配置跑rasa训练的时候出现问题&#xff0c;找了国内论坛有解决的人&#xff0c;但是说的不明白。查阅了很多论坛之后发现了解决的方案。 https://github.com/keras-team/keras-tuner/issues/317 问题描述以及错误&#xff1a; 关键错误 &#xff1a;c…

做视频号小店什么类目最容易爆单?其实,弄懂这三点就会选品了

大家好&#xff0c;我是电商花花。 我们做视频号小店做什么类目最容易爆单&#xff1f; 其实任何类目都有属于自己的受众人群和客户&#xff0c;都非常容易爆单&#xff0c;我们想要爆单&#xff0c;就要选对类目&#xff0c;选对产品。 视频号上所有的类目基本上可以分为标…

C2prog烧写程序

DSP开发&#xff0c;使用CCS软件建立工程 C2prog 支持C2prog通过串口进行下载&#xff0c;支持out文件。这个下载器下载速度比官方提供的UNIFLASH还要快。 boot跳线设置&#xff0c;不同的DSP拨码方式不相同。制作单板硬件时&#xff0c;通常时将前面三个直接拉到高&#xff…

视频号小店,目前电商界最值得去做的创业项目,一篇解读!

大家好&#xff0c;我是电商小V 要说24年最火的创业性项目那一定是视频号小店&#xff0c;为什么会这样说呢&#xff1f;这主要的还是和他背后的平台有关系&#xff0c;视频号小店是背靠腾讯电商平台的&#xff0c;坐拥的流量可以说是很多的&#xff0c;可以说视频号小店的靠山…