/// <summary> /// 新增临时素材 /// </summary> /// <param name="file">文件流</param> /// <param name="fileName">文件名称</param> /// <param name="type">媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)</param> /// <returns></returns> public static EntMediaResult AddMedia(Stream file, string fileName, EntMediaType type) { MultipartFormDataContent content = EntInterface.BuildFromContent(fileName, file); var url = string.Format(ADD_MEDIA_URL, EntInterface.AccessToken, type.ToString()); return(WebApiHelper.PostHttpContent <EntMediaResult>(url, content)); }
/// <summary> /// 新增永久素材 /// </summary> /// <param name="type"></param> /// <param name="fileName"></param> /// <param name="file"></param> /// <param name="title">视频时有效</param> /// <param name="introduction">视频时有效</param> /// <returns></returns> public static EntMediaResult AddMaterial(EntMediaType type, Stream file, string fileName, string title, string introduction) { MultipartFormDataContent form = BuildFromContentForever(fileName, file, type, title, introduction); var url = string.Format(ADD_MATERIAL_URL, EntInterface.AccessToken); var result = WebApiHelper.PostAsyncStr(url, form); return(SerializeHelper.JsonDeserialize <EntMediaResult>(result)); //return WebApiHelper.PostAsync<EntMediaResult>(url, form); }
/// <summary> /// 读取永久素材列表 /// </summary> /// <param name="type">类型 不能为news</param> /// <param name="offset">从全部素材的该偏移位置开始返回,0表示从第一个素材 默认0</param> /// <param name="count">返回素材的数量,取值在1到20之间,默认20</param> /// <returns></returns> public static EntMeterialResult GetMaterialList(EntMediaType type, int offset, int count = 20) { var url = string.Format(GET_MATERIAL_LIST_URL, EntInterface.AccessToken); if (type == EntMediaType.news) { throw new Exception("news请使用GetMaterialNewsList"); } return(WebApiHelper.PostAsync <EntMeterialResult>(url, new { type = type.ToString(), offset = offset, count = count })); }
/// <summary> /// form文件头(永久素材) /// </summary> /// <param name="fileName"></param> /// <param name="file"></param> /// <param name="type"></param> /// <param name="title"></param> /// <param name="introduction"></param> /// <returns></returns> public static MultipartFormDataContent BuildFromContentForever(string fileName, Stream file, EntMediaType type, string title, string introduction) { var Boundary = EntInterface.Boundary; MultipartFormDataContent form = new MultipartFormDataContent(Boundary); // 文件头 form.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data;boundary=" + Boundary); // 视频特殊处理 if (type == EntMediaType.video) { var video = "{\"title\":\"" + title + "\", \"introduction\":\"" + introduction + "\"}"; var videoContent = new StringContent(video); videoContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") { Name = "\"description\"", }; form.Add(videoContent); } var content = EntInterface.BuildStreamContent(fileName, file); form.Add(content); return(form); }
/// <summary> /// 新增永久素材 /// </summary> /// <param name="filePath"></param> /// <param name="title"></param> /// <param name="type"></param> /// <param name="introduction"></param> /// <returns></returns> public static EntMediaResult AddMaterial(string filePath, string title, EntMediaType type, string introduction) { return(AddMaterial(type, File.OpenRead(filePath), Path.GetFileName(filePath), title, introduction)); }
/// <summary> /// 新增临时素材 /// </summary> /// <param name="filePath"></param> /// <param name="type"></param> /// <returns></returns> public static EntMediaResult AddMedia(string filePath, EntMediaType type) { return(AddMedia(File.OpenRead(filePath), Path.GetFileName(filePath), type)); }