示例#1
0
        /// <summary>
        /// 检测上传的媒体是否满足基本要求
        /// </summary>
        /// <param name="media"></param>
        /// <returns></returns>
        private BasicResult MediaChecker(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(BasicResult.GetFailed("缺少媒体参数"));
            }
            if (!File.Exists(media.MediaPath))
            {
                return(BasicResult.GetFailed("指定的媒体文件不存在"));
            }
            if (string.IsNullOrEmpty(media.MediaType))
            {
                return(BasicResult.GetFailed("未指定媒体类型"));
            }
            if (new FileInfo(media.MediaPath).Length > sizes[media.MediaType])
            {
                return(BasicResult.GetFailed(string.Format("指定的媒体文件超过限制大小{0}K", sizes[media.MediaPath] / 1024)));
            }

            return(BasicResult.GetSuccess());
        }
        /// <summary>
        ///     上传媒体。
        ///     注意:如果上传失败,会抛出WxMenuException异常
        /// </summary>
        /// <param name="media"></param>
        /// <returns></returns>
        public RemoteMedia Upload(LocalMedia media)
        {
            var checkRet = MediaChecker(media);
            if (!checkRet.IsSuccess)
                throw new WxException(-9999, checkRet.ErrMsg); //todo:考虑是否设计新的Exception类,以区分异常是由微信抛出还是本地抛出

            var param = new FormData
            {
                {"access_token", AccessToken},
                {"type", media.MediaType}
            };
            var rs = new HttpHelper(UploadUrl).Upload(param, media.MediaPath);
            var ret = JsonConvert.DeserializeObject<RemoteMedia>(rs);
            if (string.IsNullOrEmpty(ret.MediaID))
            {
                var ex = JsonConvert.DeserializeObject<BasicResult>(rs);
                throw new WxException(ex);
            }
            return ret;
        }
        /// <summary>
        ///     检测上传的媒体是否满足基本要求
        /// </summary>
        /// <param name="media"></param>
        /// <returns></returns>
        private BasicResult MediaChecker(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 BasicResult.GetFailed("缺少媒体参数");
            if (!File.Exists(media.MediaPath))
                return BasicResult.GetFailed("指定的媒体文件不存在");
            if (string.IsNullOrEmpty(media.MediaType))
                return BasicResult.GetFailed("未指定媒体类型");
            if (new FileInfo(media.MediaPath).Length > sizes[media.MediaType])
                return BasicResult.GetFailed(string.Format("指定的媒体文件超过限制大小{0}K", sizes[media.MediaPath]/1024));

            return BasicResult.GetSuccess();
        }
示例#4
0
        /// <summary>
        /// 上传媒体。
        /// 注意:如果上传失败,会抛出WxMenuException异常
        /// </summary>
        /// <param name="media"></param>
        /// <returns></returns>
        public RemoteMedia Upload(LocalMedia media)
        {
            var checkRet = MediaChecker(media);

            if (!checkRet.IsSuccess)
            {
                throw new WxException(-9999, checkRet.ErrMsg);//todo:考虑是否设计新的Exception类,以区分异常是由微信抛出还是本地抛出
            }
            var param = new FormData()
            {
                { "access_token", AccessToken },
                { "type", media.MediaType }
            };
            var rs  = new HttpHelper(UploadUrl).Upload(param, media.MediaPath);
            var ret = JsonConvert.DeserializeObject <RemoteMedia>(rs);

            if (string.IsNullOrEmpty(ret.MediaID))
            {
                var ex = JsonConvert.DeserializeObject <BasicResult>(rs);
                throw new WxException(ex);
            }
            return(ret);
        }