什么是MIME类型
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。七种大类别:
- video
- image
- application
- text
- audio
- multipart
- message
IIS Mine类型设置
打开IIS,右击“网站”(或者具体某一个站点)—属性,选择“HTTP头”选项卡,选择“MINE类型”,点击新建,扩展名填“.aip”,MINE类型填“text/x-audiosoft-intra”,点击确定。
MIME类型相关应用
下载文件
前提条件:IIS Mine类型设置有对应配置
更好的选择是从config中读取扩展名/ mime类型对,并将其注入到Config方法中,这样可以从配置中管理扩展名:
appsettings.json:
"StaticFilesConfig": {
"AllowedExtensions": {
".apk": "application/vnd.android.package-archive",
".ext": "application/ext-example-mimetype" // example
}
}
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<StaticFilesConfig>(Configuration.GetSection("StaticFilesConfig"));
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env
, ILoggerFactory loggerFactory, IOptions<StaticFilesConfig> staticFilesConfig)
{
if (staticFilesConfig != null)
{
SetStaticFileOptions(app, staticFilesConfig);
}
}
private void SetStaticFileOptions(IApplicationBuilder app
, IOptions<StaticFilesConfig> staticFilesOptions)
{
var mapping = staticFilesOptions.Value.AllowedExtensions;
if (mapping != null && mapping.Any())
{
var provider =
new FileExtensionContentTypeProvider(staticFilesOptions.Value.AllowedExtensions);
app.UseStaticFiles(new StaticFileOptions
{
ContentTypeProvider = provider
});
}
}
}
StaticFilesConfig.cs:
public class StaticFilesConfig
{
public IDictionary<string, string> AllowedExtensions { get; set; }
}