如何从文件扩展名中获得MIME类型?


当前回答

FileExtension处理文件扩展名,而不是Mime。用户可以更改文件扩展名,因此请检查Mime。代码示例通过文件扩展名关联Mime,这是错误的,不能工作。

需要获取内容类型文件,并检查表Mime contetType该文件根据文件扩展名。现在,如何获得文件的内容类型?

使用FileUpload是这样的: 现在,如果我已经有文件,捕捉你的ContentType?

其他回答

FileExtension处理文件扩展名,而不是Mime。用户可以更改文件扩展名,因此请检查Mime。代码示例通过文件扩展名关联Mime,这是错误的,不能工作。

需要获取内容类型文件,并检查表Mime contetType该文件根据文件扩展名。现在,如何获得文件的内容类型?

使用FileUpload是这样的: 现在,如果我已经有文件,捕捉你的ContentType?

您可以在注册表中找到这些信息。例如,.pdf文件的MIME类型可以在键HKEY_CLASSES_ROOT\.pdf中找到,在值"Content type "中:

string mimeType = Registry.GetValue(@"HKEY_CLASSES_ROOT\.pdf", "Content Type", null) as string;

你可以使用mimemaps类。我认为这是最简单的方法。我也给出了mimemapping的导入。因为我觉得找这些类的导入很麻烦。

import org.springframework.boot.web.server.MimeMappings;    
MimeMappings mm=new MimeMappings();
String mimetype = mm.get(fileExtension);
System.out.println(mimetype);

我已经编写了一个程序来获取和转换Apache mime。类型文件到c#字典<字符串,字符串>的关键文件扩展名。这里的。

实际的输出是这个文件(但是您可能希望获取它并再次运行它,以防Apache文件在我上次运行之后已经更新)。

public static Dictionary<string, string> MimeTypes = new Dictionary<string, string>
{
  { "123", "application/vnd.lotus-1-2-3" },
  { "3dml", "text/vnd.in3d.3dml" },
  { "3g2", "video/3gpp2" },
  { "3gp", "video/3gpp" },
  { "7z", "application/x-7z-compressed" },
  { "aab", "application/x-authorware-bin" },
  { "aac", "audio/x-aac" },
  { "aam", "application/x-authorware-map" },
  { "aas", "application/x-authorware-seg" },
  { "abw", "application/x-abiword" },
  ...

您可以使用Apache的httpd提供的表。将其映射到函数、字典、列表等应该是很简单的。

另外,正如这里所看到的,extension->mime类型不一定是函数。每个文件扩展名可能有多种常见的MIME类型,所以你应该看看你的应用程序的需求,看看你为什么关心MIME类型,你想用它们“做什么”等等。您可以使用文件扩展名来确定相同的行为吗?您是否也需要读取文件的前几个字节来确定其MIME类型?