public IActionResult Upload([FromServices] VirgoFileProvider fp, string sm = null, string groupName = null, string subdir = null, string csName = null) { var fh = fp.CreateFileHandler(sm, KnifeVirgo.ConfigInfo.CreateDC(csName)); var FileData = Request.Form.Files[0]; var file = fh.Upload(FileData.FileName, FileData.Length, FileData.OpenReadStream(), groupName, subdir, null, FileData.ContentType); return(Ok(new { Id = file.GetID(), Name = file.FileName })); }
public IActionResult GetFile([FromServices] VirgoFileProvider fp, string id, string csName = null) { var file = fp.GetFile(id, true, KnifeVirgo.ConfigInfo.CreateDC(csName)); if (file == null) { return(BadRequest(Localizer["FileNotFound"])); } file.DataStream?.CopyToAsync(Response.Body); file.DataStream.Dispose(); return(new EmptyResult()); }
public IActionResult DownloadFile([FromServices] VirgoFileProvider fp, string id, string csName = null) { var file = fp.GetFile(id, true, KnifeVirgo.ConfigInfo.CreateDC(csName)); if (file == null) { return(BadRequest(Localizer["FileNotFound"])); } var ext = file.FileExt.ToLower(); var contenttype = "application/octet-stream"; if (ext == "pdf") { contenttype = "application/pdf"; } if (ext == "png" || ext == "bmp" || ext == "gif" || ext == "tif" || ext == "jpg" || ext == "jpeg") { contenttype = $"image/{ext}"; } return(File(file.DataStream, contenttype, file.FileName ?? (Guid.NewGuid().ToString() + ext))); }
public IActionResult UploadImage([FromServices] VirgoFileProvider fp, int?width = null, int?height = null, string sm = null, string groupName = null, string subdir = null, string csName = null) { if (width == null && height == null) { return(Upload(fp, sm, groupName, csName)); } var fh = fp.CreateFileHandler(sm, KnifeVirgo.ConfigInfo.CreateDC(csName)); var FileData = Request.Form.Files[0]; Image oimage = Image.FromStream(FileData.OpenReadStream()); if (oimage == null) { return(BadRequest(Localizer["UploadFailed"])); } if (width == null) { width = height * oimage.Width / oimage.Height; } if (height == null) { height = width * oimage.Height / oimage.Width; } MemoryStream ms = new MemoryStream(); oimage.GetThumbnailImage(width.Value, height.Value, null, IntPtr.Zero).Save(ms, System.Drawing.Imaging.ImageFormat.Png); ms.Position = 0; var file = fh.Upload(FileData.FileName, FileData.Length, ms, groupName, subdir); oimage.Dispose(); ms.Dispose(); if (file != null) { return(Ok(new { Id = file.GetID(), Name = file.FileName })); } return(BadRequest(Localizer["UploadFailed"])); }
public static IServiceCollection AddVirgoContextForConsole(this IServiceCollection services, string jsonFileDir = null, string jsonFileName = null, Func <IVirgoFileHandler, string> fileSubDirSelector = null) { var configBuilder = new ConfigurationBuilder(); IConfigurationRoot ConfigRoot = configBuilder.AddKnifeJsonConfig(null, jsonFileDir, jsonFileName).Build(); var VirgoConfigs = ConfigRoot.Get <Configs>(); services.Configure <Configs>(ConfigRoot); services.AddLogging(builder => { builder.ClearProviders(); builder.AddConfiguration(ConfigRoot.GetSection("Logging")) .AddConsole() .AddDebug() .AddVirgoLogger(); }); var gd = GetGlobalData(); services.AddHttpContextAccessor(); services.AddSingleton(gd); VirgoFileProvider._subDirFunc = fileSubDirSelector; services.TryAddScoped <IDataContext, NullContext>(); services.AddScoped <VirgoContext>(); services.AddScoped <VirgoFileProvider>(); services.AddVirgoHttpClient(VirgoConfigs); services.AddDistributedMemoryCache(); var cs = VirgoConfigs.Connections; foreach (var item in cs) { var dc = item.CreateDC(); dc.Database.EnsureCreated(); } VirgoFileProvider.Init(VirgoConfigs, gd); return(services); }
public IActionResult GetFileModel([FromServices] VirgoFileProvider fp, string id, string csName = null) { return(Ok(fp.GetFileModel(id, KnifeVirgo.ConfigInfo.CreateDC(csName)))); }
public IActionResult DeletedFile([FromServices] VirgoFileProvider fp, string id, string csName = null) { fp.DeleteFile(id, KnifeVirgo.ConfigInfo.CreateDC(csName)); return(Ok()); }
public static IApplicationBuilder UseVirgoContext(this IApplicationBuilder app) { var configs = app.ApplicationServices.GetRequiredService <IOptionsMonitor <Configs> >().CurrentValue; var lg = app.ApplicationServices.GetRequiredService <LinkGenerator>(); var gd = app.ApplicationServices.GetRequiredService <GlobalData>(); var localfactory = app.ApplicationServices.GetRequiredService <IStringLocalizerFactory>(); //获取所有程序集 gd.AllAssembly = Utils.GetAllAssembly(); //set Core's _Callerlocalizer to use localizer point to the EntryAssembly's Program class var programType = Assembly.GetCallingAssembly()?.GetTypes()?.Where(x => x.Name == "Program").FirstOrDefault(); var coredll = gd.AllAssembly.Where(x => x.GetName().Name == "KnifeZ.Virgo.Core.dll" || x.GetName().Name == "KnifeZ.Virgo.Core").FirstOrDefault(); var programLocalizer = localfactory.Create(programType); coredll.GetType("KnifeZ.Virgo.Core.CoreProgram").GetProperty("Callerlocalizer").SetValue(null, programLocalizer); var controllers = gd.GetTypesAssignableFrom <IBaseController>(); gd.AllModule = GetAllModules(controllers); gd.AllAccessUrls = GetAllAccessUrls(controllers); gd.SetMenuGetFunc(() => { var menus = new List <SimpleMenu>(); var cache = app.ApplicationServices.GetRequiredService <IDistributedCache>(); var menuCacheKey = "FFMenus"; if (cache.TryGetValue(menuCacheKey, out List <SimpleMenu> rv) == false) { var data = GetAllMenus(gd.AllModule, configs); cache.Add(menuCacheKey, data, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = new TimeSpan(1, 0, 0) }); menus = data; } else { menus = rv; } return(menus); }); foreach (var m in gd.AllModule) { foreach (var a in m.Actions) { string u = null; if (a.ParasToRunTest != null && a.ParasToRunTest.Any(x => x.ToLower() == "id")) { u = lg.GetPathByAction(a.MethodName, m.ClassName, new { id = 0, area = m.Area?.AreaName }); } else { u = lg.GetPathByAction(a.MethodName, m.ClassName, new { area = m.Area?.AreaName }); } if (u != null && u.EndsWith("/0")) { u = u.Substring(0, u.Length - 2); if (m.IsApi == true) { u = u + "/{id}"; } } a.Url = u; } } var test = app.ApplicationServices.GetService <ISpaStaticFileProvider>(); VirgoFileProvider.Init(configs, gd); using (var scope = app.ApplicationServices.CreateScope()) { var fixdc = scope.ServiceProvider.GetRequiredService <IDataContext>(); if (fixdc is NullContext) { var cs = configs.Connections; foreach (var item in cs) { var dc = item.CreateDC(); dc.DataInit(gd.AllModule, true).Wait(); } } else { fixdc.DataInit(gd.AllModule, true).Wait(); } } return(app); }