Ответ 1
Следующий код должен работать:
string contentType;
new FileExtensionContentTypeProvider().TryGetContentType(FileName, out contentType);
return contentType ?? "application/octet-stream";
Я пытаюсь переместить мой старый проект mvc5 в mvc6. Старый код:
public string ContentType
{
get
{
if (!string.IsNullOrEmpty(FileName))
return MimeMapping.GetMimeMapping(FileName);
return null;
}
}
Ошибка
Имя "MimeMapping" не существует в текущем контексте
Следующий код должен работать:
string contentType;
new FileExtensionContentTypeProvider().TryGetContentType(FileName, out contentType);
return contentType ?? "application/octet-stream";
Существует пакет NuGet MimeTypes, который работает с проектами .Net Core в качестве альтернативы FileExtensionContentTypeProvider
. Я не знаю о каком-либо другом пакете resolver mime-типа, который работает с .Net Core (по крайней мере до сих пор).
Использование прост:
string fileName = "trial.jpg";
string mime = MimeKit.MimeTypes.GetMimeType(fileName);
System.Web не перемещается в .NetCore, потому что он слишком много полагается на API, специфичный для платформы. Вы можете взглянуть на исходный источник Microsoft:
https://github.com/Microsoft/referencesource/blob/master/System.Web/MimeMapping.cs
Код подлежит лицензии MIT.