ASP.NET获取微信客户端上传的图片

ASP.NET获取微信客户端上传的图片

本来我以为这个是很简单的事情,后来做了才发现原来使用微信JS-SDK的时候,微信的HTML5客户端不会将图片直接post给我服务端,而是先提交给微信服务器,然后我的服务端需要通过serverId 来获得图片,大致的流程我绘制了UML,大家可以理解下

Created with Raphaël 2.1.0 微信客户端 微信客户端 微信服务器 微信服务器 WebAPI WebAPI 存储服务器 存储服务器 locaID serverid serverID access token/serverid filename/stream filename/stream

目前我们只关心服务器这段,我们将得到客户端传来的ServerID,从微信的服务器上下载图片到本地。
需要实现这一点,我们有两个前提
- 公众号要注册,要给钱,这就是前面强调需要完成的的认证的原因
- 获取access token

我们实现的代码如下

public async Task<string> Get(string mediaid)
{
    var queryString = HttpUtility.ParseQueryString(string.Empty);
    queryString["access_token"] = await Get();
    queryString["media_id"] = mediaid;

    var uri = "http://file.api.weixin.qq.com/cgi-bin/media/get?" + queryString;

    HttpResponseMessage response;
    response = await client.GetAsync(uri);

    var msg = await response.Content.ReadAsStreamAsync();
    var file = response.Content.Headers.ContentDisposition.FileName.Replace("\"", "");

    var helper = new ProjecToxfordClientHelper();

    var content = await FileHelper.ReadAsync (msg);

    FileHelper.SaveFile(content, file);

    return file;
}

如果access token正确且media_id(就是那个serverid)有效,微信服务端会返回给我们文件名和流,我们就可以对这些流做一些我们希望的处理了。

好了,到了现在的话,我们对微信服务器需要实现的接口都差不多了,接下来我们需要实现牛津计划的FACE了。

你可能感兴趣的:(asp.net,微信)