做微信公众号开发有一段时间了,一开始拿到公众号上的上传图片这个需求的时候,心里想了想,那不是很简单吗和普通的文件上传不是一样吗,还被同事笑话了下,后来自己去看了下微信官方提供的文档才发现其实是不太一样的。
简单来说公众号上的图片上传其实分为两个步骤,一是用户从自己相册选出的照片首先会被上传到了微信自己的服务器,然后就有了一个会返回给我们一个mediaId,二来呢我们用这个Id可以从我们的服务端下载这张照片然后进去我们自己的相关处理,最后呢把结果展示给用户。

前端配置

首先进去第一步的操作,用户选择本机的照片然后上传到微信。页面的js配置。
$(document).ready(function () {wx.config({debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId: appId, // 必填,公众号的唯一标识timestamp: timestamp, // 必填,生成签名的时间戳nonceStr: noncestr, // 必填,生成签名的随机串signature: signature,// 必填,签名,见附录1jsApiList: ["getLocation", "uploadImage", "chooseImage"] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2});wx.chooseImage({count: 1, // 默认9sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有success: function (res) {var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片upImg(localIds.toString(), type);}});
});

选择完图片后的上传操作:

function upImg(localIds, type) {wx.uploadImage({localId: localIds, // 需要上传的图片的本地ID,由chooseImage接口获得isShowProgressTips: 1,// 默认为1,显示进度提示success: function (res) {var mediaId = res.serverId; // 返回图片的服务器端IDuploadImg(mediaId, type);  //自己的上传处理}});
}

微信部分的上传就搞定了,然后还要在我们自己的平台下载下来这张图片。

后端处理

根据微信提供给我们的mediaId多媒体编号我们可以通过微信提供的接口将这张图片下载下来,参考代码如下:
public static string DownLoad(string accessToken,string mediaId,string serverPath,string fileName){string file = string.Empty;string strpath = string.Empty;string savepath = string.Empty;string stUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=" + accessToken + "&media_id=" + mediaId;HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(stUrl);req.Method = "GET";using (WebResponse wr = req.GetResponse()){HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse();strpath = myResponse.ResponseUri.ToString();WebClient mywebclient = new WebClient();savepath = System.Web.HttpContext.Current.Server.MapPath(serverPath) + "\\" + fileName;try{mywebclient.DownloadFile(strpath, savepath);file = savepath;}catch (Exception ex){savepath = ex.ToString();}}return file; }

好了这边的file就是文件的路径了。

总结

上面所讲述的是微信公众号页面上对于图片上传的处理,还有想视频、音频的处理都是和这个一样,这里就不多做介绍了。以上是我对于微信公众号开发的一点点小小的理解,大家也可以私聊我和我谈谈自己的看法或是其他意见!
谢谢大家的支持,转载请注明出处!

微信公众号多媒体文件的处理相关推荐

  1. 微信公众号接口权限表汇总

    2019独角兽企业重金招聘Python工程师标准>>> 微信公众号目前分为订阅号.服务号.企业号,订阅号和服务号又区分认证和非认证,部分权限又有细微差异,整理个列表方便大家检索和查询 ...

  2. C#微信公众号开发系列教程二(新手接入指南)

    此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教 ...

  3. .net微信公众号开发——基础接口

    作者:王先荣     本文讲述微信公众号开发中基础接口的使用,包括以下内容:     (1)获取许可令牌(AccessToken):     (2)获取微信服务器地址:     (3)上传.下载多媒体 ...

  4. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  5. Java微信公众号开发之微信素材管理工具类

    1.前言 微信公众号在使用接口的时候是通过传入media_id来进行调用的,所以在使用的接口的时候我们往往需要先上传素材,然后拿到微信返回给我们的media_id去调用相关接口,素材管理分为临时素材和 ...

  6. 微信公众号给微信用户推送信息 模板信息

    该功能主要是用于利用微信公众号向微信用户推送与用户相关的信息,在开发此功能之前需要获取到微信公众号的access_token,以及微信公众号的模板id 为了保证用户不受到骚扰,在开发者出现需要主动提醒 ...

  7. 微信公众号之错误返回码

    微信公众号之错误返回码 返回码 说明 -1 系统繁忙,此时请开发者稍候再试 0 请求成功 40001 获取 access_token 时 AppSecret 错误,或者 access_token 无效 ...

  8. 【分享】微信公众号在 “集简云平台“ 集成应用的常见问题与解决方案

    "function category of API need be confirmed by component rid"错误 是由于使用未认证的微信公众号或者个人微信公众号没有此 ...

  9. 微信公众号开发-----实现模板、图文、文本、音乐、图片推送

    本篇文章实现模板.图文.文本.音乐.图片推送,前提是已经搭建了微信开发环境.读完本文后,实现的主要效果如下 在测试账号中配置模板 登录测试公众号/正式公众号(认证后的服务号),测试公众号:模板消息接口 ...

最新文章

  1. Java学习从入门到精通的学习建议
  2. 【FPGA】FPGA中的缓冲与驱动那些事
  3. frame和bounds
  4. 阅读【现代网络技术 SDN/NFV/QOE 物联网和云计算】 第一章
  5. vue对象拼接_vue 俩个数组对象合并成一个
  6. 删文97篇!前UCLA教授竟是民科?不看好量子通信被禁言
  7. 【Spring】SpringBoot 如何使用JMX
  8. python基础之-数据类型
  9. keil4如何将c语言转换成汇编语言_keil中怎么在c语言里嵌入汇编语言
  10. mysql sql语句面试经典50题_经典sql面试及答案(50)
  11. Docker 之MySQL 重启,提示Error response from daemon: driver failed programming external connectivity on **
  12. php可以用cmd运行,用cmd运行php代码
  13. 测试计划工作的目的是什么?
  14. qemu指定CPU型号
  15. leetcode232 用栈实现队列
  16. Chartboost-x新鲜出炉: C++ Wrapper of Chartboost for Cocos2d-x
  17. optaplanner学习笔记(六)使用Solver求解器
  18. 【排序】快排(霍尔快排)
  19. 对List进行多维度排序
  20. mysql后门_运用Mysql语句生成后门具体办法

热门文章

  1. 【4】ubu1404绑定固定ip
  2. OpenCV-Python实战(4) —— OpenCV 五角星各点在坐标系上面的坐标计算(以重心为原点)
  3. 原创 | GIS国产化除了软件还有什么
  4. 2021年度总结:区块链农业技术领袖平台Dimitra
  5. 【猿来小课】解析Linux学习问题汇总
  6. vue中关闭浏览器清除localStorage,并且刷新时保持状态不受影响
  7. Iteratot(迭代器模式) 行为型
  8. push推送相关注意事项
  9. win10wifi间歇性断网重启后恢复_解决WIN10间歇性断网
  10. python怎么掉包_python掉包侠与深浅拷贝