public IHttpActionResult UploadPhotos(Guid typeId) { var ids = HttpContext.Current.Request.Form["mediaIds"].Trim(',').Split(','); foreach (var mediaId in ids) { var fileName = DateTime.Now.ToString("yyyy-MM-dd"); //文件保存的名字 var fileSaveName = Guid.NewGuid().ToString("N") + ".png"; //租户Id var dirName = TenantId.ToString(); var path = Path.Combine(HttpContext.Current.Server.MapPath("~/MediaFiles"), dirName); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } path = Path.Combine(path, fileSaveName); //从临时素材获取 using (var stream = File.Create(path)) { //TODO:切换SDK MediaApi.Get(WeChatConfigManager.Current.GetAccessToken(), mediaId, stream); } //上传到永久素材 var result = MediaApi.UploadForeverMedia(AccessToken, path); if (!string.IsNullOrWhiteSpace(result.errmsg)) { return(BadRequest(result.errmsg)); } //写入数据 var pic = new Site_Image { IsFrontCover = !db.Site_Images.Any(p => p.ResourcesTypeId == typeId), MediaId = result.media_id, Name = fileName, //站内地址 SiteUrl = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName), Url = result.url, ResourcesTypeId = typeId }; SetModel(pic, default(Guid)); db.Site_Images.Add(pic); db.SaveChanges(); } return(Ok()); }
/// <summary> /// 上传站点资源 /// </summary> /// <param name="resoureType"></param> /// <param name="file"></param> /// <param name="db"></param> /// <returns></returns> public static Site_FileBase Upload(Site_ResourceType resoureType, string fileName, byte[] fileStream, AppDbContext db, out AjaxResponse ajaxMessage) { ajaxMessage = new AjaxResponse { Success = true }; var fileSaveName = Guid.NewGuid().ToString("N") + Path.GetExtension(fileName); var tenantId = WeiChatApplicationContext.Current.TenantId; var dirName = tenantId.ToString(); var path = Path.Combine(HttpContext.Current.Server.MapPath("~/MediaFiles"), dirName); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } path = Path.Combine(path, fileSaveName); File.WriteAllBytes(path, fileStream); UploadForeverMediaResult result = null; result = resoureType.ResourceType == SiteResourceTypes.Video ? MediaApi.UploadForeverVideo(WeChatConfigManager.Current.GetAccessToken(), path, fileName, "test") : MediaApi.UploadForeverMedia(WeChatConfigManager.Current.GetAccessToken(), path); if (!string.IsNullOrWhiteSpace(result.errmsg)) { ajaxMessage.Success = false; ajaxMessage.Message = result.errmsg; } else { switch (resoureType.ResourceType) { case SiteResourceTypes.Gallery: { var pic = new Site_Image { IsFrontCover = false, MediaId = result.media_id, Name = fileName, SiteUrl = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName), Url = result.url, ResourcesTypeId = resoureType.Id, CreateBy = HttpContext.Current.User.Identity.GetUserId(), CreateTime = DateTime.Now, TenantId = tenantId }; db.Site_Images.Add(pic); db.SaveChanges(); return(pic); } break; case SiteResourceTypes.Voice: { var voice = new Site_Voice { MediaId = result.media_id, Name = fileName, SiteUrl = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName), Url = result.url, ResourcesTypeId = resoureType.Id, CreateBy = HttpContext.Current.User.Identity.GetUserId(), CreateTime = DateTime.Now, TenantId = tenantId }; db.Site_Voices.Add(voice); db.SaveChanges(); return(voice); } break; case SiteResourceTypes.Video: { var video = new Site_Video { MediaId = result.media_id, Name = fileName, SiteUrl = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName), Url = result.url, ResourcesTypeId = resoureType.Id, CreateBy = HttpContext.Current.User.Identity.GetUserId(), CreateTime = DateTime.Now, TenantId = tenantId }; db.Site_Videos.Add(video); db.SaveChanges(); return(video); } break; default: ajaxMessage.Success = false; ajaxMessage.Message = "不支持上传此类型"; break; } } return(null); }