PHP实现企业微信素材上传与获取的完整指南与踩坑日记

news2025/2/24 23:08:44

企业微信作为一款专门为企业打造的即时通讯工具,提供了丰富的功能和接口,其中包括素材管理。素材管理在企业内部的沟通、分享和展示中起着重要的作用。本篇文章将介绍如何使用PHP语言对接企业微信素材上传和获取的功能。

017479e25db64818be28cb9b481f829a.png

## 1. 准备工作

首先,您需要一个企业微信的开发者账号并创建一个企业应用。在企业应用中,您需要获取到以下几个关键信息:

- 企业ID(CorpID)
- 应用的凭证密钥(Secret)
- 应用的AgentID

## 2. 安装依赖库

在开始编写代码之前,您需要确保您的PHP环境已经安装了cURL扩展。如果没有安装,您可以通过以下命令进行安装:


sudo apt-get install php-curl

## 3. 实现素材上传

首先,我们需要实现素材的上传功能。企业微信的素材上传接口是通过HTTP POST请求来实现的。具体步骤如下:

- 构建上传请求的URL,包括AccessToken参数,可通过企业微信提供的接口获取。
- 构建POST请求数据,包括文件路径、文件类型等。
- 使用cURL库发送POST请求,并获取返回的JSON数据。
- 解析返回的JSON数据,获取素材的MediaID,以便后续的素材获取和使用。

以下是一个示例的PHP代码片段:

<?php
// 获取AccessToken
$accessToken = getAccessToken(); // 需自行实现获取AccessToken的函数

// 构建上传请求URL
$url = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={$accessToken}&type=image";

// 构建POST请求数据
$postData = [
    'media' => new CURLFile('/path/to/image.jpg')
];

// 发送POST请求
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

// 解析返回的JSON数据
$result = json_decode($response, true);
$mediaID = $result['media_id'];

// 输出上传成功的结果
echo "素材上传成功,MediaID: {$mediaID}";
?>

## 4. 实现素材获取

除了上传素材,我们还需要实现素材的获取功能。企业微信提供了素材获取接口,我们可以根据MediaID来获取具体的素材内容。具体步骤如下:

- 构建获取请求的URL,包括AccessToken和MediaID参数。
- 使用cURL库发送GET请求,并获取返回的二进制数据。
- 将二进制数据保存为文件或直接在页面上显示。

以下是一个示例的PHP代码片段:


<?php
// 获取AccessToken
$accessToken = getAccessToken(); // 需自行实现获取AccessToken的函数

// 构建获取请求URL
$mediaID = "your_media_id";
$url = "https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token={$accessToken}&media_id={$mediaID}";

// 发送GET请求
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

// 将二进制数据保存为文件或直接在页面上显示
$file = fopen("/path/to/save/image.jpg", "w");
fwrite($file, $response);
fclose($file);

echo "素材获取成功";
?>

根据素材id获取素材文件流,并转化成可识别的文件33d56fe0dc8241cebd4ae22acf434b41.gif

企微素材id三天有效没过期失效,d79618c41c054d51a47e18ea90cd398f.gif

根据文件流,获取真实链接b74199a15671424abdb9155c31f649dd.gif

下载附件存档并记录e0cc72d8152b4ceca2568f950f0e9f66.gif

这样,您就成功地实现了PHP对接企业微信素材上传和获取的功能。您可以根据自己的需求进行二次开发和扩展,在企业内部实现更多有趣和实用的功能。

 

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

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

相关文章

AI数据分析:Excel表格智能判断数据起点来计算增长率

工作任务&#xff1a;计算Excel表格中2023年1月到2024年4月的总增长率和复合增长率。 如果数据都有的情况下&#xff0c;公式很简单&#xff1a; 总增长率 (O2-B2)/B2 复合增长率 POWER((O2/B2),1/13)-1 但是&#xff0c;2023年1月、2月、3月的数据&#xff0c;有些有&…

LLM2Vec论文阅读笔记

这是篇LLM论文&#xff0c;用decoder-like的LLM去提取embedding文章认为&#xff0c;decoder-like的LLM在text embedding task表现不优的一大原因就是其casual attention mechanism&#xff0c;其实就是mask的问题。所以只要对现有的decoder-only LLM进行如下三步改进&#xff…

SpringBoot配置第三方专业缓存技术jetcache方法缓存方案

jetcache方法缓存 我们可以给每个方法配置缓存方案 JetCache 是一个基于 Java 的缓存库&#xff0c;支持多种缓存方案和缓存策略&#xff0c;主要用于提升应用程序的性能和响应速度。它提供了多种缓存模式和特性&#xff0c;可以根据需求选择合适的缓存方案。 JetCache 的主…

VPC Access Connector 介绍 - 让 Non-VPC product 也可以访问VPC Network内的资源

什么是VPC product 和 非 VPC product 在GCP 上&#xff0c; VPC product 指的是属于某个制定的vpc subnet, 具有至少1个 该 subnet 的内网ip的产品 常见的例如: compute engine / MIG &#xff08;managed instances group)某些dataflow job (指定了 可选参数subnet )Cloud …

C++设计模式——Composite组合模式

一&#xff0c;组合模式简介 真实世界中&#xff0c;像企业组织、文档、图形软件界面等案例&#xff0c;它们在结构上都是分层次的。将系统分层次的方式使得统一管理和添加不同子模块变得容易&#xff0c;在软件开发中&#xff0c;组合模式的设计思想和它们类似。 组合模式是…

复分析——第4章——Fourier变换(E.M. Stein R. Shakarchi)

第4章 Fouier变换 Raymond Edward Alan Christopher Paley, Fellow of Trinity College, Cambridge, and International Research Fellow at the Massachusetts Institute of Technology and at Harvard University, was killed by an avalanche on April 7, 1933, whi…

Golang | Leetcode Golang题解之第166题分数到小数

题目&#xff1a; 题解&#xff1a; func fractionToDecimal(numerator, denominator int) string {if numerator%denominator 0 {return strconv.Itoa(numerator / denominator)}s : []byte{}if numerator < 0 ! (denominator < 0) {s append(s, -)}// 整数部分numer…

中科数安 | 加密管理系统

中科数安提供的加密管理系统是一套全面而高效的数据安全解决方案&#xff0c;旨在保护企业核心文件资料的安全。该系统结合了多种先进的技术手段和管理策略&#xff0c;确保企业数据在存储、传输和使用过程中都得到严格的保护。 www.weaem.com 以下是中科数安加密管理系统的主要…

ES 8.14 Java 代码调用,增加knnSearch 和 混合检索 mixSearch

1、pom依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>8.14.0</version></dependency><dependency><groupId>co.elastic.clients<…

可解释机器学习之SHAP方法

以Breast cancer wisconsin (diagnostic) dataset数据集为例。 # Built-in libraries import math import numpy as np import pandas as pd# Visualization libraries import matplotlib.pyplot as plt import seaborn as sns# Sklearn libraries # from skle…

项目估算

1.项目估算的基本内容 2.基本估算方法 3.WBS估算法 4.资源估算的基本过程 5.由工作量和开发周期来估算 6.资源特征描述 7.项目角色职能确定 8.工期估算方法 9.成本估算方法 10.LOC估算法 LOC&#xff08;Lines of Code&#xff0c;代码行数&#xff09;估算法是一种简单且直接…

Gracia:打造超逼真VR体验,引领体积视频新时代

在数字化浪潮中,虚拟现实(VR)技术以其独特的沉浸式体验,逐渐成为科技前沿的热点。而在这个领域中,Gracia正以其创新的体积视频技术,为用户带来前所未有的真实感VR体验,致力于成为“空间计算领域的YouTube”。 Gracia,一个充满活力的初创公司,已经获得了120万美元的种…

【记录44】【案例】echarts地图

效果&#xff1a;直接上效果图 环境&#xff1a;vue、echarts4.1.0 源码 // 创建容器 <template><div id"center"></div> </template>//设置容器大小&#xff0c;#center { width: 100%; height: 60vh; }这里需注意&#xff1a;笔者在echar…

音频基础知识和音频指标

音频基础知识 声音 声音&#xff08;sound)是由物体振动产生的声波。物体在一秒钟之内振动的次数叫做频率&#xff0c;单位是赫兹&#xff0c;字母Hz。人耳可以识别的声音频率在 20 Hz~20000 Hz之间&#xff1b; 声音三要素&#xff1a; 响度 响度&#xff0c;…

谷歌Google广告开户是怎么收费的?

谷歌Google广告无疑是企业拓展全球视野、精准触达目标客户的强大引擎。而作为这一旅程的启航站&#xff0c;开户流程的便捷性与成本效益成为了众多企业关注的焦点。云衔科技&#xff0c;作为数字化营销解决方案与SaaS软件服务的领军者&#xff0c;正以其专业、高效的服务体系&a…

【凤凰房产-注册安全分析报告-缺少轨迹的滑动条】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

Eureka 学习笔记(1)

一 、contextInitialized() eureka-core里面&#xff0c;监听器的执行初始化的方法&#xff0c;是contextInitialized()方法&#xff0c;这个方法就是整个eureka-server启动初始化的一个入口。 Overridepublic void contextInitialized(ServletContextEvent event) {try {init…

Win32:第一个窗口程序-注册窗口类(Part.2)

在part 1中我们阐述了窗口模板程序中的相关宏、全局函数和相关函数声明后我们Part2就来说一下part 1中声明的一个函数MyRegisterClass注册窗口类函数&#xff08;函数中也使用到了定义的一些全局变量&#xff09;&#xff0c;为什么要注册窗口类在part 1中已经阐述过了&#xf…

本地快速部署 SuperSonic

本地快速部署 SuperSonic 0. 引言1. 本地快速部署 supersonic2. 访问 supersonic3. 支持的数据库4. github 地址 0. 引言 SuperSonic融合Chat BI&#xff08;powered by LLM&#xff09;和Headless BI&#xff08;powered by 语义层&#xff09;打造新一代的BI平台。这种融合确…

Python 数据可视化 散点图

Python 数据可视化 散点图 import matplotlib.pyplot as plt import numpy as npdef plot_scatter(ref_info_dict, test_info_dict):# 绘制散点图&#xff0c;ref横&#xff0c;test纵plt.figure(figsize(80, 48))n 0# scatter_header_list [peak_insert_size, median_insert…