首先新建一個ASP.NET Core 項目,選中空的模板,以下圖所示瀏覽器
在NuGet包中添加Microsoft.AspNetCore.StaticFilesapp
添加好之後咱們在Startup.cs中添加對應的中間件(若是不明白中間件是什麼查看上一篇)async
默認文件夾是wwwroot 若是不想使用wwwroot須要使用StaticFileOptions來設置目錄。ide
這裏設置一下目錄到項目根目錄ui
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(); var staticfile = new StaticFileOptions(); staticfile.FileProvider = new PhysicalFileProvider(@"F:\xm\core\XzyFilesServer\XzyFilesServer\bin\Debug\netcoreapp1.1\"); app.UseStaticFiles(staticfile);//使用默認文件夾wwwroot if(env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) =>{ await context.Response.WriteAsync("HelloWorld!"); }); }
這裏咱們設置到項目根目錄this
而後在根目錄建立一個readme.txt文件 spa
在裏面寫入.net core.net
而後程序運行起來訪問咱們的文件能夠看見 成功瀏覽readme.txt文件code
若是咱們須要瀏覽全部的文件夾及文件,就須要用到UseDirectoryBorwser ,具體以下視頻
public void ConfigureServices(IServiceCollection services) { services.AddDirectoryBrowser(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(); var dir = new DirectoryBrowserOptions(); dir.FileProvider = new PhysicalFileProvider(@"F:\xm\core\XzyFilesServer\XzyFilesServer\bin\Debug\netcoreapp1.1\"); app.UseDirectoryBrowser(dir); var staticfile = new StaticFileOptions(); //制定目錄也能夠指定其餘文件夾 staticfile.FileProvider = new PhysicalFileProvider(@"F:\xm\core\XzyFilesServer\XzyFilesServer\bin\Debug\netcoreapp1.1\"); //若是不指定使用默認文件夾wwwroot app.UseStaticFiles(staticfile); if(env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { await context.Response.WriteAsync("HelloWorld!"); }); }
這裏須要在Startup的ConfigureServices方法中加入services.AddDirectoryBrowser();
程序運行起來後,結果如上圖
咱們在換成C盤試一試
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(); var dir = new DirectoryBrowserOptions(); dir.FileProvider = new PhysicalFileProvider(@"C:\"); app.UseDirectoryBrowser(dir); var staticfile = new StaticFileOptions(); //制定目錄也能夠指定其餘文件夾 staticfile.FileProvider = new PhysicalFileProvider(@"F:\xm\core\XzyFilesServer\XzyFilesServer\bin\Debug\netcoreapp1.1\"); //若是不指定使用默認文件夾wwwroot app.UseStaticFiles(staticfile); if(env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { await context.Response.WriteAsync("HelloWorld!"); }); }
能夠看到,咱們能夠訪問C盤的全部文件夾及文件了。
當打開一些文件時會發現,有些文件能夠打開,有些文件會出現404錯誤,那是由於MIME Type沒有識別出來。
咱們能夠手動設置這些MIME Type,也能夠給這些未識別的設置一個默認值。具體代碼以下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(); var dir = new DirectoryBrowserOptions(); dir.FileProvider = new PhysicalFileProvider(@"C:\"); app.UseDirectoryBrowser(dir); var staticfile = new StaticFileOptions(); //制定目錄也能夠指定其餘文件夾 staticfile.FileProvider = new PhysicalFileProvider(@"C:\"); staticfile.ServeUnknownFileTypes = true; staticfile.DefaultContentType = "application/x-msdownload";//設置默認MIMEType //若是不指定使用默認文件夾wwwroot app.UseStaticFiles(staticfile); if(env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { await context.Response.WriteAsync("HelloWorld!"); }); }
設置好後 對於未識別的,默認瀏覽器會下載這些文件。
若是想用手機查看電腦的圖片或者視頻等文件,則在加入一句代碼就能夠實現了。
public class Program { public static void Main(string[] args) { var host = new WebHostBuilder().UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseUrls("http://*:5000")//加上這個就能經過ip+端口訪問了 .UseStartup<Startup>() .UseApplicationInsights() .Build(); host.Run(); } }
手機訪問效果圖如上