用asp.net core打造一个简单的文件服务器

在这里插入图片描述
在这里插入图片描述
首先新建一个ASP.NET Core项目,选择空的模板。

使用NuGet命令添加Microsoft.AspNetCore.StaticFiles引用:

Install-Package Microsoft.AspNetCore.StaticFiles

添加好引用以后,在Startup.cs中的Configure方法下添加如下代码:

    public void Configure(IApplicationBuilder app)
    {
        app.UseStaticFiles();//使用默认文件夹wwwroot

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello World!");
        });
    }

接着在wwwroot文件夹(没有的话可以自己新建一个文件夹,取名wwwroot)中添加一张图:NET-Core.png。

程序运行后访问http://localhost:*/NET-Core.png ,就会在页面上显示这张图片

如果不想使用默认wwwroot文件夹,可以使用StaticFileOptions来设置指定目录

具体代码如下:

    public void Configure(IApplicationBuilder app)
    {
        //更改默认文件夹 (StaticFileOptions方法)
        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:*/readme.txt,如下图所示:

成功浏览readme.txt文件

如果我们需要浏览所有文件夹及文件,就要用到UseDirectoryBrowser, 下面代码是浏览C盘的所有文件:

    public void ConfigureServices(IServiceCollection services)
    {
       
        app.Run(async (context) =>
        { //使用UseDirectoryBrowser ,需要在这里加入services.AddDirectoryBrowser();
        services.AddDirectoryBrowser();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app)
    {
        //app.UseStaticFiles();//使用默认文件夹wwwroot

        var dir = new DirectoryBrowserOptions();
        dir.FileProvider = new PhysicalFileProvider(@"C:\");
        app.UseDirectoryBrowser(dir);

        //更改默认文件夹 (StaticFileOptions方法)
        var staticfile = new StaticFileOptions();
        staticfile.FileProvider = new PhysicalFileProvider(@"C:\");//指定目录,这里指C盘,也可以是其他目录
   app.UseStaticFiles(staticfile);//使用默认文件夹wwwroot
        //手动设置MIME Type,或者设置一个默认值, 以解决某些文件MIME Type文件识别不到,出现404错误
        staticfile.ServeUnknownFileTypes = true;
        staticfile.DefaultContentType = "application/x-msdownload";//设置默认MIME Type
        var provider = new FileExtensionContentTypeProvider();//使用一组默认映射创建新的提供程序
        provider.Mappings.Add(".log", "text/plain");//手动设置对应MIME Type
        staticfile.ContentTypeProvider = provider; //将文件映射到内容类型

         app.Run(async (context) =>
       {
            await context.Response.WriteAsync("Hello World!");
        });

    }

手动设置MIME Type 是为了防止有些文件MIME Type识别不出来 就会出现404错误。也可以给这些未识别的设置一个默认值解决

    设置好后,对于未识别的,默认为application/x-msdownload,浏览器会下载这些文件,这样.log就被手动设置为文本方式,浏览器会将其展示出来。这样我们也就实现了一个简单的文件服务器。

    如果想用手机查看电脑的图片或者视频等文件,则将程序加一句代码就可以实现了:

    在Program.cs中

public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseUrls(“http://*:5000”) //加上这个就能通过http://ip5000访问
.UseStartup()
.Build();

    host.Run();
  }
     这样在同一局域网内,在手机上使用浏览器访问http://ip:5000,就能访问电脑中C盘的文件了.

在苹果电脑中遇到了一个奇怪的问题,就是用vs2017来运行调试启动此项目,无法用ip绑定来访问。
http://192.168.2.104:5000/

但我cd 到网站所在的目录,然后用命令行运行dotnet run --urls “http://*:8080” 后就可以访问了:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值