File Erlang mime类型

File Erlang mime类型,file,erlang,mime,File,Erlang,Mime,我如何知道Erlang文件的mime类型 谢谢。如果您想根据文件扩展名了解文件的mime类型,可以使用未记录的inets函数httpd\u conf:load\u mime\u types/1。这与mime.types文件(OTP中的一个iNet httpd示例中有一个)一起,将为您提供文件扩展名及其默认关联mime类型的列表。以下代码将根据扩展名为给定文件名提供标准mime类型: mime_type(FileName) -> "." ++ Extension = filename

我如何知道Erlang文件的mime类型


谢谢。

如果您想根据文件扩展名了解文件的mime类型,可以使用未记录的inets函数
httpd\u conf:load\u mime\u types/1
。这与
mime.types
文件(OTP中的一个iNet httpd示例中有一个)一起,将为您提供文件扩展名及其默认关联mime类型的列表。以下代码将根据扩展名为给定文件名提供标准mime类型:

mime_type(FileName) ->
    "." ++ Extension = filename:extension(FileName),
    MimeTypes = mime_types(),
    proplists:get_value(Extension, MimeTypes).

mime_types() ->
    MimeTypesFile = filename:join(code:lib_dir(inets), 
                                  "examples/server_root/conf/mime.types"),
    {ok, MimeTypes} = httpd_conf:load_mime_types(MimeTypesFile),
    MimeTypes.
您现在可以对文件名(例如
example.pdf
)使用
mime\u type/1
,如果已知(在本例中为
“application/pdf”
)或
未定义
,则返回默认mime类型


如果要重复执行此操作,最好像
inets
httpd
服务器那样缓存
httpd\u conf:load\u mime\u types/1
的结果,这样可以避免一直读取和解析mime types文件。

取决于您需要什么。如果不是很重要,您可以非常简单,只需使用*NIX环境中通常可用的
file
命令即可。它超越了使用几个测试(文件系统、幻数和文本检查)来猜测文件扩展名的范围

您可以获得解析该输出所需的位。这是非常低效的,因为每次调用都会产生一个操作系统进程,但非常简单

如果您需要一些高效的工具,您可能需要编写C驱动程序(例如使用libmagic)或在erlang中使用本机实现,但我不知道有任何现有的实现。

也许您可以使用以下方法: mochiweb_mime:from_扩展名(文件名:扩展名(文件))

%%@作者Bob Ipolito%%@版权所有2007 Mochi 媒体公司

%%@doc根据文件扩展名给出了一个很好的MIME类型猜测

-模块(mochiweb_mime)。 -作者('bob@mochimedia.com'). -导出([from_extension/1])

%%@spec from_扩展名(S::string())->string()|未定义%%@doc 给定文件扩展名(例如“.html”),返回对MIME的猜测 %%键入如“text/html”。如果没有,将返回未定义的原子 好的%%猜测是可用的

来自扩展名(“.stl”)-> “应用程序/SLA”;从_扩展(“.stp”)-> “申请/步骤”;来自扩展名(“.step”)-> “申请/步骤”;来自扩展名(“.dwg”)-> “应用程序/acad”;来自扩展名(“.ez”)-> “申请书/安德鲁插图”;从U扩展(“ccad”)-> “应用程序/clariscad”;来自扩展名(“.drw”)-> “申请/起草”;来自扩展名(“.tsp”)-> “应用程序/数据类型”;来自扩展名(“.dxf”)-> “应用程序/dxf”;来自扩展名(“.xls”)-> “应用程序/excel”;来自_分机(“.unv”)-> “应用程序/i-deas”;来自扩展名(“.jar”)-> “应用程序/java存档”;从_扩展(“.hqx”)-> “应用程序/mac-binhex40”;来自扩展名(“.cpt”)-> “应用程序/mac compactpro”;来自扩展名(“.pot”)-> “application/vnd.ms powerpoint”;来自扩展名(“.ppt”)-> “application/vnd.ms powerpoint”;来自扩展名(“.dms”)-> “应用程序/八位字节流”;从_扩展(“.lha”)-> “应用程序/八位字节流”;从_扩展(“.lzh”)-> “应用程序/八位字节流”;来自扩展名(“.oda”)-> “申请/官方发展援助”;来自扩展名(“.ogg”)-> “应用程序/ogg”;来自扩展名(“.ogm”)-> “应用程序/ogg”;来自扩展名(“.pdf”)-> “申请表/pdf”;来自扩展名(“.pgp”)-> “应用程序/pgp”;来自扩展名(“.ai”)-> “申请书/附言”;来自扩展名(“.eps”)-> “申请书/附言”;来自扩展名(“.ps”)-> “申请书/附言”;来自扩展名(“.prt”)-> “应用/专业英语”;来自扩展名(“.rtf”)-> “应用程序/rtf”;来自扩展名(“.smi”)-> “应用程序/smil”;来自扩展名(“.smil”)-> “应用程序/smil”;来自扩展名(“.sol”)-> “应用/固体”;来自_扩展(“.vda”)-> “应用程序/vda”;来自扩展名(“.xlm”)-> “应用程序/vnd.ms excel”;来自扩展名(“.cod”)-> “应用程序/vnd.rim.cod”;来自扩展名(“.pgn”)-> “应用程序/x-chess-pgn”;来自_扩展(“.cpio”)-> “应用程序/x-cpio”;来自扩展名(“.csh”)-> “应用程序/x-csh”;来自扩展名(“.deb”)-> “应用程序/x-debian-package”;来自扩展名(“.dcr”)-> “应用程序/x-director”;来自扩展名(“.dir”)-> “应用程序/x-director”;来自扩展名(“.dxr”)-> “应用程序/x-director”;来自扩展名(“.gz”)-> “应用程序/x-gzip”;来自扩展名(“.hdf”)-> “应用程序/x-hdf”;来自扩展名(“.ipx”)-> “应用程序/x-ipix”;来自扩展名(“.ips”)-> “应用程序/x-ipscript”;来自扩展名(“.js”)-> “应用程序/x-javascript”;从_扩展(“.skd”)-> “应用程序/x-koan”;从_扩展(“.skm”)-> “应用程序/x-koan”;从_扩展(“.skp”)-> “应用程序/x-koan”;来自扩展名(“.skt”)-> “应用程序/x-koan”;来自扩展名(“.latex”)-> “应用/x-乳胶”;来自扩展名(“.lsp”)-> “应用程序/x-lisp”;来自扩展名(“.scm”)-> “应用程序/x-lotusscreencam”;来自扩展名(“.mif”)-> “应用程序/x-mif”;来自_扩展名(“.com”)-> “应用程序/x-msdos-program”;来自扩展名(“.exe”)-> “应用程序/八位字节流”;来自扩展名(“.cdf”)-> “应用程序/x-netcdf”;来自扩展名(“.nc”)-> “应用程序/x-netcdf”;来自扩展名(“.pl”)-> “应用程序/x-perl”;从扩展名(“.pm”)-> “应用程序/x-perl”;来自扩展名(“.rar”)-> “应用程序/x-rar-compressed”;来自扩展名(“.sh”)-> “应用程序/x-sh”;来自扩展名(“.shar”)-> “应用程序/x-shar”;从_扩展(“.swf”)-> “应用/x-冲击波-flash”;来自扩展名(“.sit”)-> “应用程序/x-stuffit”;来自_扩展(“.sv4cpio”)-> “应用
1> os:cmd("file -i erl_crash.dump").
"erl_crash.dump: text/plain; charset=us-ascii\n"