回答
如果你想知道基於擴展名的文件的MIME類型,你可以使用無證的inets函數httpd_conf:load_mime_types/1
。這與一個mime.types
文件(在OTP中有一個inets 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.
現在,您可以在文件名中使用mime_type/1
(如example.pdf
),如果知道它會回報你的默認的MIME類型(在這種情況下爲"application/pdf"
)或者undefined
。
如果你要反覆做這個手術,這將是一個好主意,緩存httpd_conf:load_mime_types/1
結果作爲inets
httpd
服務器執行,這樣就避免讀取和解析MIME類型文件的所有時間。
取決於你想要什麼。如果它不重要,則可以非常簡單,只需使用通常在* NIX環境中可用的file
命令。它使用多個測試(文件系統,幻數和文本檢查)通過文件擴展名進行猜測。
1> os:cmd("file -i erl_crash.dump").
"erl_crash.dump: text/plain; charset=us-ascii\n"
你可以得到你想要解析那個輸出的位。這是非常低效的,因爲你每次調用都會產生一個OS進程,但是很簡單。
如果您需要一些有效的方法,您可能需要在erlang中編寫C驅動程序(例如使用libmagic)或本地實現,但我不知道任何現有的驅動程序。
也許你可以使用這個: mochiweb_mime:from_extension(文件名:擴展名(文件))
%% @author鮑勃·伊波利托%% @copyright 2007年糕 Media,Inc.的
% %@doc根據文件擴展名提供了一個很好的MIME類型猜測。
-module(mochiweb_mime)。 -author('[email protected]')。 -export([from_extension/1])。 (S :: string()) - > string()|方法返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首undefined %% @doc 給定文件擴展名(例如「.html」)會返回MIME %%類型的猜測,例如「text/html」。如果沒有 良好的%%猜測可用,將返回原子未定義。
from_extension(「.stl」) - > 「application/SLA」; from_extension(「.stp」) - > 「application/STEP」; from_extension(「。step」) - > 「application/STEP」; from_extension(「。dwg」) - > 「application/acad」; from_extension(「。ez」) - > 「application/andrew-inset」; from_extension(「。ccad」) - > 「application/clariscad」; from_extension(「。drw」) - > 「申請/起草」; from_extension(「。tsp」) - > 「application/dsptype」; from_extension(」。(「.xls」) - > 「application/excel」; from_extension(「。unv」) - > 「application/i-deas」; from_extension(「。 jar「) - > 」application/java-archive「; from_extension(」。hqx「) - > 」application/mac-binhex40「; from_extension(」.cpt「) - > 」application/mac-compactpro「; from_extension(「。pot」) - > 「application/vnd.ms-powerpoint」; from_extension(「。ppt」) - > 「application/vnd.ms-powerpoint」; from_extension(「。dms」) - > 「application/octet-stream」; from_extension(「.lha」) - > 「application/octet-stream」; from_extension(「。lzh」) - > 「application/octet-stream」; from_extension(「.oda」 ) - > 「的申請N/ODA「; from_extension(「.ogg」) - > 「application/ogg」; from_extension(「。ogm」) - > 「application/ogg」; from_extension(「。pdf」) - > 「application/pdf」; from_extension(「。pgp」) - > 「application/pgp」; from_extension(「。ai」) - > 「application/postscript」; from_extension(「。eps」) - > 「application/postscript」; from_extension(「。ps」) - > 「application/postscript」; from_extension(「。prt」) - > 「application/pro_eng」; from_extension(「。rtf」) - > 「application/rtf」; from_extension(「。smi」) - > 「application/smil」; from_extension(「。smil」) - > 「application/smil」; from_extension(「。sol」) - > 「application/solids」; from_extension(「.vda」) - > 「application/vda」; from_extension(「。xlm」) - > 「application/vnd.ms-excel」; from_extension(「。cod」) - > 「application/vnd.rim.cod」; from_extension(「。pgn」) - > 「application/x-chess-pgn」; from_extension(「.cpio」) - > 「application/x-cpio」; from_extension(「。csh」) - > 「application/x-csh」; from_extension(「。deb」) - > 「application/x-debian-package」; from_extension(「。dcr」) - > 「application/x-director」; from_extension(「。dir」) - > 「application/x-director」; from_extension(「.dxr」) - > 「application/x-director」; from_extension(「。gz」) - > 「application/x-gzip」; from_extension(「。hdf」) - > 「application/x-hdf」; from_extension(「。ipx」) - > 「application/x-ipix」; from_extension(「.ips」) - > 「application/x-ipscript」; from_extension(「。js」) - > 「application/x-javascript」; from_extension(「。skd」) - > 「application/x-koan」; from_extension(「。skm」) - > 「application/x-koan」; from_extension(「。skp」) - > 「application/x-koan」; from_extension(「。skt」) - > 「application/x-koan」; from_extension(「。latex」) - > 「application/x-latex」; from_extension(「。lsp」) - > 「application/x-lisp」; from_extension(「。scm」) - > 「application/x-lotusscreencam」; from_extension(「。mif」) - > 「application/x-mif」; from_extension(「。com」) - > 「application/x-msdos-program」; from_extension(「.exe」) - > 「application/octet-stream」; from_extension(「.cdf」) - > 「application/x-netcdf」; from_extension(「。nc」) - > 「application/x-netcdf」; from_extension(「。pl」) - > 「application/x-perl」; from_extension(「。pm」) - > 「application/x-perl」; from_extension(「。rar」) - > 「application/x-rar-compressed」; from_extension(「.sh」) - > 「application/x-sh」; from_extension(「。shar」) - > 「application/x-shar」; from_extension(「。swf」) - > 「application/x-shockwave-flash」; from_extension(「。sit」) - > 「application/x-stuffit」; from_extension(「.sv4cpio」) - > 「application/x-sv4cpio」; from_extension(」。sv4crc「) - > 」application/x-sv4crc「; from_extension(」。tar.gz「) - > 」application/x-tar-gz「; from_extension(」。tgz「) - > 」application/x (「.tx」) - > 「application/x-tcl」; from_extension(「。texi」) - >從擴展(「。tar」) - > 「application/x-tar」 > 「application/x-texinfo」; from_extension(「。texinfo」) - > 「application/x-texinfo」; from_extension(「.man」) - > 「application/x-troff-man」; from_extension 「.me」) - > 「application/x-troff-me」; from_extension(「.ms」) - > 「application/x-troff-ms」; from_extension(「。roff」) - > 「application/x-troff「; from_extension(」。t「) - > 」application/x-troff「; from_extensi on(「。tr」) - > 「application/x-troff」; from_extension(「。ustar」) - > 「application/x-ustar」; from_extension(「。src」) - > 「application/x-wais-source」; from_extension(「。zip」) - > 「application/zip」; from_extension(「。tsi」) - > 「audio/TSP-audio」; from_extension(「。au」) - > 「audio/basic」; from_extension(「.snd」) - > 「audio/basic」; from_extension(「。kar」) - > 「audio/midi」; from_extension(「。mid」) - > 「audio/midi」; from_extension(「。midi」) - > 「audio/midi」; from_extension(「.mp2」) - > 「audio/mpeg」; from_extension(「。mp3」) - > 「audio/mpeg」; from_extension(「.mpga」) - > 「audio/mpeg」; from_extension(「。aif」) - > 「audio/x-aiff」; from_extension(「。aifc」) - > 「audio/x-aiff」; from_extension(「。aiff」) - > 「audio/x-aiff」; from_extension(「。m3u」) - > 「audio/x-mpegurl」; from_extension(「。wax」) - > 「audio/x-ms-wax」; from_extension(「。wma」) - > 「audio/x-ms-wma」; from_extension(「.rpm」) - > 「audio/x-pn-realaudio-plugin」; from_extension(「。ram」) - > 「audio/x-pn-realaudio」; from_extension(「。rm」) - > 「audio/x-pn-realaudio」; from_extension(「。ra」) - > 「audio/x-realaudio」; from_extension(「。wav」) - > 「audio/x-wav」; from_extension(「。pdb」) - > 「chemical/x-pdb」; from_extension(「。ras」) - > 「image/cmu-raster」; from_extension(「.gif」) - > 「image/gif」; from_extension(「。ief」) - > 「image/ief」; from_extension(「。jpe」) - > 「image/jpeg」; from_extension(「.jpeg」) - > 「image/jpeg」; from_extension(「。jpg」) - > 「image/jpeg」; from_extension(「。jp2」) - > 「image/jp2」; from_extension(「。png」) - > 「image/png」; from_extension(「。tif」) - > 「image/tiff」; from_extension(「。tiff」) - > 「image/tiff」; from_extension(「。pnm」) - > 「image/x-portable-anymap」; from_extension(「。pbm」) - > 「image/x-portable-bitmap」; from_extension(「。pgm」) - > 「image/x-portable-graymap」; from_extension(「.ppm」) - > 「image/x-portable-pixmap」; from_extension(「。rgb」) - > 「image/x-rgb」; from_extension(「。xbm」) - > 「image/x-xbitmap」; from_extension(「。xwd」) - > 「image/x-xwindowdump」; from_extension(「。iges」) - > 「model/iges」; from_extension(「.igs」) - > 「model/iges」; from_extension(「。mesh」) - > 「model/mesh」; from_extension(「。」) - > 「」; from_extension(「。msh」) - > 「model/mesh」; from_extension(「。silo」) - > 「model/mesh」; from_extension(「。vrml」) - > 「model/vrml」; from_extension(「。wrl」) - > 「model/vrml」; from_extension(「.css」) - > 「text/css」; from_extension(「。htm」) - > 「text/html」; from_extension(」。(「.c」) - > 「text/html」; from_extension(「。asc」) - > 「from text」 ) - > 「text/plain」; from_extension(「。f90」) - > 「text/plain」; from_extension(「。f」) - > 「text/plain」; from_extension(「。hh」) - > 「text/plain」; from_extension(「。m」) - > 「text/plain」; from_extension(「。txt」) - > 「text/plain」; from_extension(「.rtx」) - > 「text/richtext」; from_extension(「。sgm」) - > 「text/sgml」; from_extension(「。sgml」) - > 「text/sgml」; from_extension(「。tsv」) - > 「text/tab-separated-values「; from_extension(」.jad「) - > 「文本/ vnd.sun.j2me.app描述符」; from_extension(「.etx」) - > 「text/x-setext」; from_extension(「。xml」) - > 「application/xml」; from_extension(「。dl」) - > 「video/dl」; from_extension(「.fli」) - > 「video/fli」; from_extension(「。flv」) - > 「video/flv」; from_extension(「.gl」) - > 「video/gl」; from_extension(「。mp4」) - > 「video/mp4」; from_extension(「.mpe」) - > 「video/mpeg」; from_extension(「.mpeg」) - > 「video/mpeg」; from_extension(「。mpg」) - > 「video/mpeg」; from_extension(「。mov」) - > 「video/quicktime」; from_extension(「。qt」) - > 「video/quicktime」; from_extension(「。viv」) - > 「video/vnd.vivo」; from_extension(「。vivo」) - > 「video/vnd.vivo」; from_extension(「。asf」) - > 「video/x-ms-asf」; from_extension(「。asx」) - > 「video/x-ms-asx」; from_extension(「。wmv」) - > 「video/x-ms-wmv」; from_extension(「。wmx」) - > 「video/x-ms-wmx」; from_extension(「。wvx」) - > 「video/x-ms-wvx」; from_extension(「.avi」) - > 「video/x-msvideo」; from_extension(「。movie」) - > 「video/x-sgi-movie」; from_extension(「。mime」) - > 「www/mime」; from_extension(「。ice」) - > 「x-conference/x-cooltalk」; from_extension(「。vrm」) - > 「x-world/x-vrml」; from_extension(「。spx」) - > 「audio/ogg」; from_extension(「。xhtml」) - > 「application/xhtml + xml」; from_extension(「。bz2」) - > 「application/x-bzip2」; from_extension(「。doc」) - > 「application/msword」; from_extension(「.z」) - > 「application/x-compress」; from_extension(「.ico」) - > 「image/x-icon」; from_extension(「。bmp」) - > 「image/bmp」; from_extension(「。m4a」) - > 「audio/mpeg」; from_extension(「。csv」) - > 「text/csv」; from_extension(_) - > 未定義。
%% %% Tests %% -ifdef(TEST)。 -include_lib(「eunit/include/eunit.hrl」)。
exhaustive_from_extension_test() - > T = mochiweb_cover:clause_lookup_table(?MODULE,from_extension) [assertEqual便(V,from_extension(K))|| {K,V} < - T]。
from_extension_test() - > assertEqual便( 「text/html的」, from_extension() 「HTML 」), assertEqual便(不確定, from_extension(「」)), assertEqual便(不確定, ??? from_extension(「.wtf」)), ok。
-endif。
- 1. MIME類型
- 2. htaccess mime類型
- 3. cvs2svn MIME類型
- 4. YAML mime類型?
- 5. 空Mime類型
- 6. WPF&Mime類型
- 7. mime類型設置
- 8. MIME類型欺騙
- 9. PHP imagejpeg MIME類型
- 10. tgz的MIME類型
- 11. URN for MIME類型
- 12. xHTML IE7 MIME類型
- 13. 配置MIME類型
- 14. msgpack的MIME類型?
- 15. erlang mime get To字段
- 16. 類型檢查Erlang
- 17. erlang類型檢測
- 18. MIME實體的通用MIME類型?
- 19. MIME類型的資源類型:視頻/ *
- 20. OTRS PostmasterMailbox.pl解析/ MIME類型
- 21. MIME類型,並出口到
- 22. 獲取ALAsset的MIME類型
- 23. UIWebView和文件MIME類型
- 24. 最佳MIME類型方法
- 25. jsp中的MIME類型
- 26. Mime類型註冊表
- 27. 從MediaPromise獲取MIME /類型
- 28. Android - 檢測URL MIME類型?
- 29. .alx文件MIME類型
- 30. Internet Explorer忽略MIME類型
[Parse MIME messages]的可能重複(http://stackoverflow.com/questions/1042330/parse-mime-messages) – 2011-02-03 16:32:57