private string DownloadImage(string url, string objectid) { var result = HttpUtil.DownloadImage(url, out var contentType); var stream = StreamUtil.BytesToStream(result); var hash_code = SHAUtil.GetFileSHA1(stream); var config = StoreConfig.Config; var id = Guid.NewGuid().ToString(); var fileName = $"{id}.{url.Substring(url.LastIndexOf("/") + 1).GetFileType()}"; ServiceContainer.Resolve <IStoreStrategy>(config?.Type).Upload(stream, fileName, out var filePath); var data = new sys_file() { sys_fileId = id, name = fileName, real_name = fileName, hash_code = hash_code, file_type = "gallery", content_type = contentType, objectId = objectid }; return(Broker.Create(data)); }
public void Execute(PersistBrokerPluginContext context) { var entity = context.Entity as wechat_material; switch (context.Action) { case EntityAction.PreCreate: case EntityAction.PreUpdate: // 如果素材未上传到系统,则根据url请求图片保存 if (string.IsNullOrEmpty(entity.sys_fileid)) { var result = HttpUtil.DownloadImage(entity.url, out var contentType); var id = Guid.NewGuid().ToString(); var stream = StreamUtil.BytesToStream(result); var hash_code = SHAUtil.GetFileSHA1(stream); var config = StoreConfig.Config; ServiceContainer.Resolve<IStoreStrategy>(config?.Type).Upload(stream, entity.name, out var filePath); var sysImage = new sys_file() { sys_fileId = id, name = entity.name, real_name = entity.name, hash_code = hash_code, file_type = "wechat_material", content_type = contentType, objectId = entity.Id }; new SysFileService(context.Broker).CreateData(sysImage); entity.sys_fileid = id; entity.local_url = SysFileService.GetDownloadUrl(id); } break; case EntityAction.PreDelete: WeChatApi.DeleteMaterial(entity.GetAttributeValue<string>("media_id")); context.Broker.Delete("sys_file", entity.GetAttributeValue<string>("sys_fileid")); break; default: break; } }