Exemple #1
0
        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 }));
        }
Exemple #2
0
        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());
        }
Exemple #3
0
        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)));
        }
Exemple #4
0
        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);
        }
Exemple #6
0
 public IActionResult GetFileModel([FromServices] VirgoFileProvider fp, string id, string csName = null)
 {
     return(Ok(fp.GetFileModel(id, KnifeVirgo.ConfigInfo.CreateDC(csName))));
 }
Exemple #7
0
 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);
        }