/// <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(); }
/// <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); }