1、项目中静态文件存放在wwwroot文件夹之下,如下:要访问nihao.jpg这个文件夹,url路径可以这样写:
<img src="~/images/inhao.jpg" alt="pic"/>
wwwroot
css
images
nihao.jpg
js
那么我要访问D盘的MyStaticFiles文件夹下的images文件夹下的banner1.svg问件该如何呢?
这时我们可以在Startup.cs文件中配置app.UseStaticFiles来实现
D:/MyStaticFiles
images
banner1.svg
配置如下:
- public void Configure(IApplicationBuilder app)
- {
- app.UseStaticFiles();
- app.UseStaticFiles(new StaticFileOptions
- {
- FileProvider = new PhysicalFileProvider("D:/MyStaticFiles"),
- RequestPath = "/StaticFiles"
- });
- }
在cshtml中使用路径以访问D盘的MyStaticFiles文件夹下的images文件夹下的banner1.svg:
<img src="~/StaticFiles/images/banner1.svg" alt="pic"/>
msdn官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/static-files?view=aspnetcore-2.1&tabs=aspnetcore2x#serve-static-files
————————————————
ASP.NET Core 开发-中间件(StaticFiles)使用
ASP.NET Core 开发,中间件(StaticFiles)的使用,我们开发一款简易的静态文件服务器。
告别需要使用文件,又需要安装一个web服务器。现在随时随地打开程序即可使用,跨平台,方便快捷。
前一篇讲解了中间件的开发,了解了中间件的知识。
下面我们就来使用StaticFiles 开发一款简易静态文件服务器。还可以直接运行纯静态的网站。
新建的ASP.NET Core 项目,不是空的,也就会自带StaticFiles 。wwwroot 就是靠这个中间件读取的。
使用StaticFiles 中间件
新建一个asp.net core项目,选择空的模板。
添加 Microsoft.AspNetCore.StaticFiles 引用
Install-Package Microsoft.AspNetCore.StaticFiles -Pre
添加好引用以后,我们在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
然后程序运行起来
http://localhost:5000/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
一个文件服务器,应该可以浏览所有文件。
我们就要用到UseDirectoryBrowser
- 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盘的文件了。
你会发现有些文件打开会404,有些又可以打开。那是因为MIME 没有识别出来。
我们可以手动设置这些 MIME ,也可以给这些未识别的设置一个默认值。
- 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 就被我手动设置成文本方式。
对于前面的这么多设置,StaticFiles 提供了一种简便的写法。UseFileServer
app.UseFileServer(new FileServerOptions() { FileProvider = new PhysicalFileProvider(@"C:\"), EnableDirectoryBrowsing = true });
如果需要加上MIME,StaticFileOptions 需要绑定上。
实际应用
不知道大家平时有没有这样的需求,手机想查看电脑的图片或者视频等文件。
这里我们将程序稍微加加一句代码就可以实现了。
在 Program.cs 中
- 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 就可以访问。这样就能访问电脑的文件。
转 https://blog.csdn.net/hwt0101/article/details/117689506
标签:文件,UseStaticFiles,StaticFiles,app,中间件,new,根目录,staticfile From: https://www.cnblogs.com/wl-blog/p/17184423.html