在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
ASP.NET Core 开发,中间件(StaticFiles)的使用,我们开发一款简易的静态文件服务器。
使用StaticFiles 中间件
新建一个asp.net core项目,选择空的模板。
在项目中添加 Microsoft.AspNetCore.StaticFiles 的Nuget包引用 Microsoft.AspNetCore.StaticFiles
添加好引用以后,我们在Startup.cs 添加 public void Configure(IApplicationBuilder app) { app.UseStaticFiles();//使用默认文件夹wwwroot app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); }); } 我们在wwwroot 添加一张图 ASP-NET-Banners-01.png
如果我们不想使用默认文件夹咋办呢,我们可以使用 StaticFileOptions public void Configure(IApplicationBuilder app) { var staticfile = new StaticFileOptions(); staticfile.FileProvider = new PhysicalFileProvider(@"C:\");//指定目录 这里指定C盘,也可以是其它目录 app.UseStaticFiles(staticfile); app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); }); }
我在c盘新建一个readme.txt 写入文本 .net core 。 然后访问: http://localhost:5000/readme.txt
一个文件服务器,应该可以浏览所有文件。 public void ConfigureServices(IServiceCollection services) { services.AddDirectoryBrowser(); } public void Configure(IApplicationBuilder app) { var dir = new DirectoryBrowserOptions(); dir.FileProvider = new PhysicalFileProvider(@"C:\"); app.UseDirectoryBrowser(dir); var staticfile = new StaticFileOptions(); staticfile.FileProvider = new PhysicalFileProvider(@"C:\");//指定目录 这里指定C盘,也可以是其它目录 app.UseStaticFiles(staticfile); } 这里要在 ConfigureServices 方法加入 public void ConfigureServices(IServiceCollection services) { services.AddDirectoryBrowser(); } 访问:http://localhost:5000/ 这样我们就能浏览C盘的文件了。 public void ConfigureServices(IServiceCollection services) { services.AddDirectoryBrowser(); } public void Configure(IApplicationBuilder app) { var dir = new DirectoryBrowserOptions(); dir.FileProvider = new PhysicalFileProvider(@"C:\"); app.UseDirectoryBrowser(dir); var staticfile = new StaticFileOptions(); staticfile.FileProvider = new PhysicalFileProvider(@"C:\");//指定目录 这里指定C盘,也可以是其它目录 staticfile.ServeUnknownFileTypes = true; staticfile.DefaultContentType = "application/x-msdownload"; //设置默认 MIME var provider = new FileExtensionContentTypeProvider(); provider.Mappings.Add(".log", "text/plain");//手动设置对应MIME staticfile.ContentTypeProvider = provider; app.UseStaticFiles(staticfile); } 设置好以后,对于未识别的,默认为下载。 .log 就被我手动设置成文本方式。 app.UseFileServer(new FileServerOptions() { FileProvider = new PhysicalFileProvider(@"C:\"), EnableDirectoryBrowsing = true }); 如果需要加上MIME,StaticFileOptions 需要绑定上。
实际应用
不知道大家平时有没有这样的需求,手机想查看电脑的图片或者视频等文件。 public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseUrls("http://*:5000")//加上这个就能用ip:5000访问 .UseStartup<Startup>() .Build(); host.Run(); } 在同一局域网内,使用 ip:5000 就可以访问。这样就能访问电脑的文件。
|
请发表评论