ASP.NET獲取微信客戶端上傳的圖片

ASP.NET獲取微信客戶端上傳的圖片

本來我以爲這個是很簡單的事情,後來做了才發現原來使用微信JS-SDK的時候,微信的HTML5客戶端不會將圖片直接post給我服務端,而是先提交給微信服務器,然後我的服務端需要通過serverId 來獲得圖片,大致的流程我繪製了UML,大家可以理解下

Created with Raphaël 2.1.0微信客戶端微信客戶端微信服務器微信服務器WebAPIWebAPI存儲服務器存儲服務器locaIDserveridserverIDaccess token/serveridfilename/streamfilename/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了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章