ASP.NET獲取微信客戶端上傳的圖片
本來我以爲這個是很簡單的事情,後來做了才發現原來使用微信JS-SDK的時候,微信的HTML5客戶端不會將圖片直接post給我服務端,而是先提交給微信服務器,然後我的服務端需要通過serverId 來獲得圖片,大致的流程我繪製了UML,大家可以理解下
目前我們只關心服務器這段,我們將得到客戶端傳來的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了。