Mime type sniffer component, a library that used to identify the real type of physical file via inferring the head of the file binary information, and then returns the MIME type for that/those file extension name(s).
This repository belongs to Open Cosmos Project, a part of Cosmos Stack.
This project depend on OPENCOSMOS/FileTypeSniffer.
Choose one kind of dependency extensions that you need and install it via nuget.
Install-Package CosmosStack.Extensions.MimeTypeSniffer.DependOn.DependencyInjection
Install-Package CosmosStack.Extensions.MimeTypeSniffer.DependOn.Autofac
or use directly
Install-Package CosmosStack.Extensions.MimeTypeSniffer
Install the specific file type libraries of FileTypeSniffer as needed.
public class Startup
{
//...
public void ConfigureServices(IServiceCollection services)
{
//configuration
services.AddCosmosFileTypeSniffer();
// since MimeTypeSniffer is depended on FileTypeSniffer
services.AddCosmosMimeTypeSniffer();
}
}
...Also, you can juse register MimeTypeSniffer:
public class Startup
{
//...
public void ConfigureServices(IServiceCollection services)
{
//configuration
services.AddCosmosMimeTypeSniffer();
//It'll register FileTypeSniffer automatically
}
}
IFileTypeSniffer fileTypeSniffer = Get();//... get instance of IFileTypeSniffer
var library = new MimeTypeLibrary();
var defaultProvider = new DefaultMimeTypeProvider();
library.Register(defaultProvider.GetMimeTypes());
IMimeTypeFinder finder = new MimeTypeFinder(library);
var sniffer = new MimeTypeSniffer(fileTypeSniffer, finder);
//sniffer.Match...
//Get sniffer from DI or use dirsctly
//_sniffer...
//Load file from some place...
var path = Path.Combine(Local, fileName);
byte[] array = new byte[20];
using (var file = File.Open(path, FileMode.Open))
{
file.Read(array, 0, array.Length);
}
var results = _sniffer.Match(bytes, true);
//..
//For single result in list, false as default:
List<string> results0 = _sniffer.Match(bytes, false);
//For multiple results:
List<string> results1 = _sniffer.Match(bytes, true);
//or
string result2 = _sniffer.MatchSingle(bytes);
Full list of available file types is here.
Copy the tests\samples
directory under the tests folder to tests\IntegrationTests\bin\Debug\netcoreapp2.2
.
People or projects that have made a great contribution to this project:
- null
- The next one must be you
- null
Member project of Cosmos Stack.