Skip to content

To infer mime type from physical file's head. MimeTypeSniffer depends on FileTypeSniffer and extension name library of FileTypeSniffer. This project belongs to COSMOS LOOPS and OPEN COSMOS.

License

cosmos-open/cosmos-mimetype-sniffer

Repository files navigation

CosmosStack MimeType Sniffer Overview

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.


Nuget Packages

Package Name Version Downloads
CosmosStack.Extensions.MimeTypeSniffer
CosmosStack.Extensions.MimeTypeSniffer.DependOn.DependencyInjection
CosmosStack.Extensions.MimeTypeSniffer.DependOn.Autofac
CosmosStack.Extensions.MimeTypeSniffer.DependOn.AspectCoreInjector

Usage

Install the package

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.

Config in Startup class

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
    }
}

Use directly

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...

Write code

//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);
//..

Find single result or multiple results

//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);

Available file types

Full list of available file types is here.

How to Unit Test

Copy the tests\samples directory under the tests folder to tests\IntegrationTests\bin\Debug\netcoreapp2.2.


Thanks

People or projects that have made a great contribution to this project:

  • null
  • The next one must be you

Organizations and projects

  • null

License

Member project of Cosmos Stack.

Apache 2.0 License

About

To infer mime type from physical file's head. MimeTypeSniffer depends on FileTypeSniffer and extension name library of FileTypeSniffer. This project belongs to COSMOS LOOPS and OPEN COSMOS.

Resources

License

Stars

Watchers

Forks

Packages

No packages published