File Erlang mime类型
我如何知道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
谢谢。如果您想根据文件扩展名了解文件的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"