繁体   English   中英

ASP.NET Core如何确定MIME类型并应用不同的中间件?

[英]How does ASP.NET Core determine MIME types and apply different middleware?

我使用ASP.NET Core MVC和.NET Core 2.0。

我有一些静态文件,它们有不同的文件类型,JPEG,PNG,BMP ......

我想根据不同的文件类型应用不同的中间件。

比如PNG文件我会用ImageCompressMiddleware,BMP文件我会用ImageConvertMiddleware。

ASP.NET Core如何确定MIME类型并应用不同的中间件?

或者根据文件扩展名。

在configure部分中创建FileExtensionContentTypeProvider对象,并为每个MIME类型填充或删除映射,如下所示:

public void Configure(IApplicationBuilder app)
{
    // Set up custom content types -associating file extension to MIME type
    var provider = new FileExtensionContentTypeProvider();
    // Add new mappings
    provider.Mappings[".myapp"] = "application/x-msdownload";
    provider.Mappings[".htm3"] = "text/html";
    provider.Mappings[".image"] = "image/png";
    // Replace an existing mapping
    provider.Mappings[".rtf"] = "application/x-msdownload";
    // Remove MP4 videos.
    provider.Mappings.Remove(".mp4");

    app.UseStaticFiles(new StaticFileOptions()
    {
        FileProvider = new PhysicalFileProvider(
            Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot", "images")),
        RequestPath = new PathString("/MyImages"),
        ContentTypeProvider = provider
    });
    .
    .
    .
}

有关更多信息,请访问此链接: microsoft

静态文件中间件基本上有很长的MIME类型映射显式文件扩展名列表 所以MIME类型检测完全基于文件扩展名。

在检测到MIME类型之后但在静态文件中间件实际运行之前,没有一种明确的方法可以挂钩中间件。 但是,您可以使用StaticFileOptions.OnPrepareResponse回调来挂钩,例如修改标头。 这对你来说是否足够取决于你想要做什么。

如果您想进行更复杂的处理,可能更换静态文件中间件,则需要运行自己的MIME类型检测实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM