/// <summary> /// 检测上传的媒体是否满足基本要求 /// </summary> private WeChatResult Check(LocalMedia media) { var sizes = new Dictionary <string, long> { { Media.Image, 128 * 1024 }, { Media.Voice, 256 * 1024 }, { Media.Video, 1 * 1024 * 1024 }, { Media.Thumb, 64 * 1024 }, }; if (media == null) { return(WeChatResult.GetFailed("缺少媒体参数")); } if (!File.Exists(media.MediaPath)) { return(WeChatResult.GetFailed("指定的媒体文件不存在")); } if (string.IsNullOrEmpty(media.MediaType)) { return(WeChatResult.GetFailed("未指定媒体类型")); } if (new FileInfo(media.MediaPath).Length > sizes[media.MediaType]) { return(WeChatResult.GetFailed(string.Format("指定的媒体文件超过限制大小{0}K", sizes[media.MediaPath] / 1024))); } return(WeChatResult.GetSuccess()); }
/// <summary> /// 传入MediaID,WeChatPublic /// </summary> public WeChatResult Download(MediaParam mediaParam) { var param = new HttpParam { { "access_token", Token.GetAccessToken(mediaParam) }, { "media_id", mediaParam.MediaID } }; var url = string.Format("{0}?{1}", ApiList.MediaGet, param.Format()); var request = HttpHelper.CreateRequest(url); var response = request.GetResponse(); using (var stream = response.GetResponseStream()) { var disposition = response.Headers["Content-disposition"]; if (string.IsNullOrEmpty(disposition)) { var s = new StreamReader(stream, Encoding.UTF8).ReadToEnd(); return(JsonConvert.DeserializeObject <WeChatResult>(s)); } var fs = new FileStream(mediaParam.FilePath, FileMode.OpenOrCreate); try { var buffer = new byte[128 * 1024]; //128K int i; while ((i = stream.Read(buffer, 0, buffer.Length)) > 0) { fs.Write(buffer, 0, i); } return(WeChatResult.GetSuccess(mediaParam.FilePath)); } finally { fs.Close(); } } }