微信公众号素材代码怎么开发呢?

作者:鱼爪创媒网 点击:155 发布时间:2021-11-18

   微信公众号最新修改了素材的管理模式,提供了两类素材的管理:其中公众号素材是两个都有的,通过公众号素材可以向微信终端推送微信消息,那么就有人问小编微信公众号素材代码怎么开发呢?下面小编就给大家介绍一下。

  临时微信素材的管理代码接口定义和实现

  我们定义一个IMediaApi接口,用来定义相关的接口处理。

  1)上传临时文件

  对于上传临时文件,官方的接口定义如下所示。

  接口调用请求说明

  http请求方式: POST/FORM,需使用https

  https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

  调用示例(使用curl命令,用FORM表单方式上传一个多媒体文件):

  curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE"

  对于上传临时文件的处理,我们可以定义它的接口如下所示。

  ///

  /// 上传的临时多媒体文件。格式和大小限制,如下:

  /// 微信图片(image): 1M,支持JPG格式

  /// 语音(voice):2M,播放长度不超过60s,支持AMRMP3格式

  /// 视频(video):10MB,支持MP4格式

  /// 缩略图(thumb):64KB,支持JPG格式。

  /// 媒体文件在后台保存时间为3天,即3天后media_id失效。

  ///

  /// 调用接口凭证

  /// 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)

  /// form-data中媒体文件标识,有filename、filelength、content-type等信息

  ///

  UploadJsonResult UploadTempMedia(string accessToken, UploadMediaFileType type, string file);

  根据官方接口的说明,我们需要上传一个文件,并指定它的类型TYPE就可以了。

  具体代码如下所示。

  public UploadJsonResult UploadTempMedia(string accessToken, UploadMediaFileType type, string file)

  {

  string url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", accessToken, type.ToString());

  UploadJsonResult result = JsonHelper.PostFile(url, file);

  return result;

  }

  其中JsonHelper类的PostFile就是发送一个文件流,我们进一步可以看它的实现思路如下所示。

  ///

  /// 提交文件并解析返回的结果

  ///

  /// 提交文件数据的链接地址

  /// 文件地址

  ///

  public static T PostFile(string url, string file, NameValueCollection nvc = null)

  {

  HttpHelper helper = new HttpHelper();

  string content = helper.PostStream(url, new string[] { file }, nvc);

  VerifyErrorCode(content);

  T result = JsonConvert.DeserializeObject(content);

  return result;

  }

  上面代码主要就是通过POST一个文件流,并获得响应的结果字符串内容,然后我们分析其中是否有错误代码,如果没有,我们把字符串结果解析为对应的实体对象就可以了。

  其中返回结果的实体类信息UploadJsonResult的类定义如下所示。

  ///

  /// 上传多媒体文件的返回结果

  ///

  public class UploadJsonResult : BaseJsonResult

  {

  ///

  /// 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)

  ///

  public UploadMediaFileType type { get; set; }

  ///

  /// 媒体文件上传后,获取时的唯一标识

  ///

  public string media_id { get; set; }

  ///

  /// 媒体文件上传时间戳

  ///

  public long created_at { get; set; }

  }

  这个接口的调用实例代码如下所示。

  private void btnUpload_Click(object sender, EventArgs e)

  {

  string file = FileDialogHelper.OpenImage(false);

  if (!string.IsNullOrEmpty(file))

  {

  IMediaApi mediaBLL = new MediaApi();

  UploadJsonResult result = mediaBLL.UploadTempMedia(token, UploadMediaFileType.image, file);

  if (result != null)

  {

  this.image_mediaId = result.media_id;

  Console.WriteLine("{0} {1}", result.media_id, result.created_at);

  }

  else

  {

  Console.WriteLine("上传文件失败");

  }

  }

  }

  2)获取临时素材文件

  上传文件是上传一个文件流,并获得对应的返回结果,主要就是一个media_Id的内容;而获取素材文件则是一个逆过程,通过一个media_id的参数获取一个文件流保存到本地的过程。

  获取临时文件接口的官方定义如下所示。

  接口调用请求说明

  http请求方式: GET,https调用

  https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID

  请求示例(示例为通过curl命令获取多媒体文件)

  curl -I -G "https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"

  对于获取临时文件,我们定义的接口如下所示。

  ///

  /// 获取临时素材

  ///

  /// 调用接口凭证

  /// 媒体文件ID

  ///

  Stream GetTempMedia(string accessToken, string mediaId, ref string fileName);

  我们获得文件流的同时,也返回一个文件名参数(不过一般情况下,我们获取不到文件名)。

  它的实现代码如下所示,主要逻辑就是解析返回结果,获取返回的文件流。

  ///

  /// 获取临时素材

  ///

  /// 调用接口凭证

  /// 媒体文件ID

  ///

  public Stream GetTempMedia(string accessToken, string mediaId, ref string fileName)

  {

  string url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}", accessToken, mediaId);

  HttpHelper helper = new HttpHelper();

  Stream stream = helper.GetStream(url, ref fileName, null);

  return stream;

  }

  获取素材文件的实例代码如下所示。

  private void btnDownload_Click(object sender, EventArgs e)

  {

  if (!string.IsNullOrEmpty(image_mediaId))

  {

  IMediaApi mediaBLL = new MediaApi();

  string fileName = "";

  Stream stream = mediaBLL.GetTempMedia(token, image_mediaId, ref fileName);

  if (stream != null)

  {

  string filePath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, fileName);

  using (var fileStream = File.Create(filePath))

  {

  byte[] buffer = new byte[1024];

  int bytesRead = 0;

  while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0)

  {

  fileStream.Write(buffer, 0, bytesRead);

  }

  fileStream.Flush();

  }

  stream.Close();

  }

  Console.WriteLine("下载文件:" + (File.Exists(fileName) ? "成功" : "失败"));

  }

  }

  通过以上的描述你是否了解微信公众号素材代码怎么开发呢?这样如此全面、有效、简单的恢复方法,你学会了吗?如果你还想了解更多的话。更多更详细微信公众号素材内容,请持续关注鱼爪创媒。

相关阅读:

        微信头像藏族文字图片素材

        兰陵王花木兰情侣头像素材

        张艺兴最新帅气头像大全

鱼爪创媒是一家专业提供公众号交易、公众号迁移、公众号增粉、公众号买卖交易的平台,如果您有这方面的需求,欢迎电话咨询:13018202357。有任何疑问,可以 【立即咨询】 我们平台的客服或者添加微信号 【13018202357】 。此文章来源于网络,如有侵权,请联系删除

标签:

资金保障

提供买卖双方资金担保交易
更放心

法律保障

交易签订具有法律效益合同
提供法律支持

急速退款

专属资金通道,快速拿到
钱款

全资公司

全资控股公司,大平台交易
有保障

服务优质

3500+专业团队,为您提供24
小时一对一贴心服务