示例#1
0
        /// <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());
        }
示例#2
0
        /// <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();
                }
            }
        }