Table of Contents

Using FileUltimate in an ASP.NET Core project

To use FileUltimate in an ASP.NET Core Project, do the following in Visual Studio:

  1. Make sure you have added references to FileUltimate assemblies as described here.

  2. Open Program.cs of your project and insert the marked lines:

    using GleamTech;
    using GleamTech.AspNet;
    using GleamTech.AspNet.Core;
    
    var builder = WebApplication.CreateBuilder(args);
    
    // Add services to the container.
    builder.Services.AddControllersWithViews();
    
    
    //----------------------
    //Add GleamTech to the ASP.NET Core services container.
    builder.Services.AddGleamTech();
    //----------------------
    
    
    var app = builder.Build();
    
    // Configure the HTTP request pipeline.
    if (!app.Environment.IsDevelopment())
    {
        app.UseExceptionHandler("/Home/Error");
    }
    
    
    //----------------------
    //Register GleamTech to the ASP.NET Core HTTP request pipeline.
    app.UseGleamTech();
    //----------------------
    
    
    app.UseStaticFiles();
    
    app.UseRouting();
    
    app.UseAuthorization();
    
    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    
    app.Run();
    Caution

    services.AddGleamTech calls services.AddDistributedMemoryCache and services.AddSession internally and if you need to set a custom cache like services.AddStackExchangeRedisCache or need to call services.AddSession with custom options then place them before services.AddGleamTech so that they become effective.

    Caution

    The order of app.UseXXX methods is important so app.UseGleamTech should be placed before app.UseStaticFiles, app.UseRouting and app.UseEndpoints (or before app.UseMvc for legacy ASP.NET Core 2.1).

    If you have a legacy ASP.NET Core project (before .NET 6 minimal hosting model), open Startup.cs of your project and insert the marked lines into ConfigureServices and Configure methods of your Startup class.

    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
    
        public IConfiguration Configuration { get; }
    
    
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
    
    
            //----------------------
            //Add GleamTech to the ASP.NET Core services container.
            services.AddGleamTech();
            //----------------------
            
            
        }
    
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }
    
    
            //----------------------
            //Register GleamTech to the ASP.NET Core HTTP request pipeline.
            app.UseGleamTech();
            //----------------------
    
    
            app.UseStaticFiles();
    
            app.UseRouting();
    
            app.UseAuthorization();
    
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
  3. Optionally set FileUltimate's global configuration (if overriding a default value is required). For example, you may want to set the license key.

    You can specify the configuration in appsettings.json file:

    {
      //Set this property only if you have a valid license key, otherwise do not
      //set it so FileUltimate runs in trial mode.
      "FileUltimate:LicenseKey": "QQJDJLJP34..."
    }

    As you would notice, FileUltimate: prefix maps to FileUltimateConfiguration.Current and FileUltimateWeb: prefix maps to FileUltimateWebConfiguration.Current.

    Alternatively you can specify the configuration in code, in Configure method of your Startup.cs after app.UseGleamTech call:

    //----------------------
    //Register GleamTech to the ASP.NET Core HTTP request pipeline.
    app.UseGleamTech(() =>
    {
        //Set this property only if you have a valid license key, otherwise do not 
        //set it so FileUltimate runs in trial mode.  
        FileUltimateConfiguration.Current.LicenseKey = "QQJDJLJP34...";
    });
    //----------------------
  4. Create a new View (eg. Index.cshtml) and insert these lines:

    @using GleamTech.AspNet.Core
    @using GleamTech.FileUltimate.AspNet.UI
    
    <!DOCTYPE html>
    @{
        var fileManager = new FileManager
        {
            Width = 800,
            Height = 600,
            Resizable = true
        };
    
        var rootFolder = new FileManagerRootFolder
        {
            Name = "A Root Folder",
            Location = "~/App_Data/RootFolder1"
        };
    
        rootFolder.AccessControls.Add(new FileManagerAccessControl
        {
            Path = @"\",
            AllowedPermissions = FileManagerPermissions.Full
        });
    
        fileManager.RootFolders.Add(rootFolder);
    }
    <html>
        <head>
            <title>File Manager</title>
            @this.RenderHead(fileManager)
        </head>
        <body>
            @this.RenderBody(fileManager)
        </body>
    </html>
    Tip

    Alternatively you can add the namespaces globally in Views/_ViewImports.cshtml to avoid adding namespaces in your pages every time.

    This will render a FileManager component in the page, which displays one root folder named A Root Folder which points to virtual path ~/App_Data/RootFolder1 with Full permissions. The FileManagerRootFolder.Location property can point to a physical/virtual path, a UNC path with specific credentials, a path on Amazon S3 or Azure Blob Storage, a custom location provider.

    If you need a standalone file uploader component, insert these lines instead:

    @using GleamTech.AspNet.Core
    @using GleamTech.FileUltimate.AspNet.UI
    
    <!DOCTYPE html>
    @{
        var fileUploader = new FileUploader
        {
            Width = 600,
            Height = 300,
            Resizable = true,
            UploadLocation = "~/App_Data/Uploads"
        };
    }
    <html>
    <head>
        <title>File Uploader</title>
        @this.RenderHead(fileUploader)
    </head>
    <body>
        @this.RenderBody(fileUploader)
    </body>
    </html>