Gar*_*550 5 c# asp.net-core-mvc .net-core asp.net-core
我使用ASP.NET Core MVC和.NET Core 2.0.
我有一些静态文件,它们有不同的文件类型,JPEG,PNG,BMP ......
我想根据不同的文件类型应用不同的中间件.
比如PNG文件我会用ImageCompressMiddleware,BMP文件我会用ImageConvertMiddleware.
ASP.NET Core如何确定MIME类型并应用不同的中间件?
或者根据文件扩展名.
Ima*_*our 12
在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
});
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请访问此链接: microsoft
静态文件中间件基本上有一个很长的明确文件扩展名到 MIME 类型映射的列表。因此 MIME 类型检测仅基于文件扩展名。
\n\n在检测到 MIME 类型之后、静态文件中间件实际运行之前,并没有真正明确的方法来挂钩中间件。但是,您可以使用StaticFileOptions.OnPrepareResponse回调来挂钩它,例如修改标头。\xe2\x80\x99 对你来说是否足够取决于你想要做什么。
如果您想要进行更复杂的处理(可能替换静态文件中间件),则需要运行您自己的 MIME 类型检测实现。
\n