Java獲取URL鏈接的文件類型


問題發生:

Java從網絡批量讀取圖片並保存至本網站服務器后再插入文章中

今天轉入一篇文章 http://news.qq.com/a/20170605/045860.htm 發現圖片未能成功上傳

查看源碼發現:

因為沒有文件類型所以在轉存圖片的時候出錯了

谷歌百度了一下發現解決辦法:

URLConnection class provides two static methods to help programs figure out the MIME type of some data; you can use these if the content type just isn't available or if you have reason to believe that the content type you're given isn't correct。

就是說URLConnection提供了兩種方法可以猜測(根據實測結果,這個猜測是相當的准)數據的MIME類型。

  第一個是:

public static String guessContentTypeFromName(String name)

這個方法根據URL文件部分的后綴名來判斷類型,跟之前我的方法一樣。這個不能解決上面那個問題。
第二個是:
public static String guessContentTypeFromStream(InputStream in)
這個方法是根據流的前面幾個字節來判斷類型,這個就不需要文件后綴名了,完全可以解決上面那個問題。
BufferedInputStream bis = null;
HttpURLConnection urlconnection = null;
URL url = null;         
        url = new URL(strUrl);
    urlconnection = (HttpURLConnection) url.openConnection();
    urlconnection.connect();
bis = new BufferedInputStream(urlconnection.getInputStream());
    System.out.println("file type:"+HttpURLConnection.guessContentTypeFromStream(bis));

 但生產中發現有很多類型不能正確的判斷出來,如bmp

然后繼續各種找,最后解決了...

 再看一下無后綴名的判斷..

 

 

Application Type

文件擴展名 Content-Type(Mime-Type) 描述
. application/x-  
.* application/octet-stream 二進制流,不知道下載文件類型
.pdf application/pdf PDF(Portable Document Format的簡稱,意為“便攜式文件格式”)
.ai application/postscript PostScript(PS)是主要用於電子產業和桌面出版領域的一種頁面描述語言和編程語言。
.xml application/atom+xml Atom feeds
.js application/ecmascript 相當於application/javascript但是嚴格的處理規則
.edi application/EDI-X12 EDI ANSI ASC X12數據
.edi application/EDIFACT EDI EDIFACT數據
.json application/json JSON(JavaScript Object Notation)
.js application/javascript ECMAScript/JavaScript(相當於application/ecmascript但是寬松的處理規則)
.ogg application/ogg Ogg, 視頻文件格式
.rdf application/rdf+xml 資源描述框架(Resource Description Framework,縮寫 RDF),是萬維網聯盟(W3C)提出的一組標記語言的技術標准,以便更為豐富地描述和表達網絡資源的內容與結構。
.xml application/rss+xml RSS(Really Simple Syndication,簡易信息聚合)是一種消息來源格式規范,用以聚合經常發布更新數據的網站,例如博客文章、新聞、音頻或視頻的網摘
.xml application/soap+xml 簡單對象訪問協議(SOAP,全寫為Simple Object Access Protocol)是交換數據的一種協議規范,使用在計算機網絡Web服務(web service)中,交換帶結構信息。
.woff application/font-woff Web開放字體格式(Web Open Font Format,簡稱WOFF)是一種網頁所采用的字體格式標准。(推薦使用;使用application/x-font-woff直到它變為官方標准)
.xhtml application/xhtml+xml 可擴展超文本標記語言(eXtensible HyperText Markup Language,XHTML),是一種標記語言,表現方式與超文本標記語言(HTML)類似,不過語法上更加嚴格。
.xml application/xml 可擴展標記語言(英語:eXtensible Markup Language,簡稱: XML),是一種標記語言。
.dtd application/xml-dtd XML文件的文件型別定義(Document Type Definition)可以看成一個或者多個XML文件的模板,在這里可以定義XML文件中的元素、元素的屬性、元素的排列方式、元素包含的內容等等。
.xml application/xop+xml 二進制優化封裝協議(Xmlbinary Optimized Packaging)
.zip application/zip ZIP壓縮文件
.gzip application/gzip Gzip是若干種文件壓縮程序的簡稱,通常指GNU計划的實現,此處的gzip代表GNU zip。
.xls application/x-xls XLS 就是 Microsoft Excel 工作表,是一種非常常用的電子表格格式。
.001 application/x-001  
.301 application/x-301  
.906 application/x-906  
.a11 application/x-a11  
.awf application/vnd.adobe.workflow  
.bmp application/x-bmp  
.c4t application/x-c4t  
.cal application/x-cals  
.cdf application/x-netcdf  
.cel application/x-cel  
.cg4 application/x-g4  
.cit application/x-cit  
.bot application/x-bot  
.c90 application/x-c90  
.cat application/vnd.ms-pki.seccat  
.cdr application/x-cdr  
.cer application/x-x509-ca-cert  
.cgm application/x-cgm  
.cmx application/x-cmx  
.crl application/pkix-crl  
.csi application/x-csi  
.cut application/x-cut  
.dbm application/x-dbm  
.cmp application/x-cmp  
.cot application/x-cot  
.crt application/x-x509-ca-cert  
.dbf application/x-dbf  
.dbx application/x-dbx  
.dcx application/x-dcx  
.dgn application/x-dgn  
.dll application/x-msdownload  
.dot application/msword  
.der application/x-x509-ca-cert  
.dib application/x-dib  
.doc application/msword  
.drw application/x-drw  
.dwf application/x-dwf  
.dxb application/x-dxb  
.edn application/vnd.adobe.edn  
.dwg application/x-dwg  
.dxf application/x-dxf  
.emf application/x-emf  
.epi application/x-epi  
.eps application/postscript  
.exe application/x-msdownload  
.fdf application/vnd.fdf  
.eps application/x-ps  
.etd application/x-ebx  
.fif application/fractals  
.frm application/x-frm  
.gbr application/x-gbr  
.g4 application/x-g4  
.gl2 application/x-gl2  
.hgl application/x-hgl  
.hpg application/x-hpgl  
.hqx application/mac-binhex40  
.hta application/hta  
.gp4 application/x-gp4  
.hmr application/x-hmr  
.hpl application/x-hpl  
.hrf application/x-hrf  
.icb application/x-icb  
.ico application/x-ico  
.ig4 application/x-g4  
.iii application/x-iphone  
.ins application/x-internet-signup  
.iff application/x-iff  
.igs application/x-igs  
.img application/x-img  
.isp application/x-internet-signup  
.jpe application/x-jpe  
.js application/x-javascript  
.jpg application/x-jpg  
.lar application/x-laplayer-reg  
.latex application/x-latex  
.lbm application/x-lbm  
.ls application/x-javascript  
.ltr application/x-ltr  
.man application/x-troff-man  
.mdb application/msaccess  
.mac application/x-mac  
.mdb application/x-mdb  
.mfp application/x-shockwave-flash  
.mi application/x-mi  
.mil application/x-mil  
.mocha application/x-javascript  
.mpd application/vnd.ms-project  
.mpp application/vnd.ms-project  
.mpt application/vnd.ms-project  
.mpw application/vnd.ms-project  
.mpx application/vnd.ms-project  
.mxp application/x-mmxp  
.nrf application/x-nrf  
.out application/x-out  
.p12 application/x-pkcs12  
.p7c application/pkcs7-mime  
.p7r application/x-pkcs7-certreqresp  
.pc5 application/x-pc5  
.pcl application/x-pcl  
.pdx application/vnd.adobe.pdx  
.pgl application/x-pgl  
.pko application/vnd.ms-pki.pko  
.p10 application/pkcs10  
.p7b application/x-pkcs7-certificates  
.p7m application/pkcs7-mime  
.p7s application/pkcs7-signature  
.pci application/x-pci  
.pcx application/x-pcx  
.pdf application/pdf  
.pfx application/x-pkcs12  
.pic application/x-pic  
.pl application/x-perl  
.plt application/x-plt  
.png application/x-png  
.ppa application/vnd.ms-powerpoint  
.pps application/vnd.ms-powerpoint  
.ppt application/x-ppt  
.prf application/pics-rules  
.prt application/x-prt  
.ps application/postscript  
.pwz application/vnd.ms-powerpoint  
.ra audio/vnd.rn-realaudio RealAudio是一種由RealNetworks發展的RealMedia多媒體音頻文件格式,僅指RealPlayer中能夠識別的音頻文件,也可以理解為real格式的音頻文件。
.ras application/x-ras  
.pot application/vnd.ms-powerpoint  
.ppm application/x-ppm  
.ppt application/vnd.ms-powerpoint  
.pr application/x-pr  
.prn application/x-prn  
.ps application/x-ps  
.ptn application/x-ptn  
.red application/x-red  
.rjs application/vnd.rn-realsystem-rjs  
.rlc application/x-rlc  
.rm application/vnd.rn-realmedia  
.rat application/rat-file  
.rec application/vnd.rn-recording  
.rgb application/x-rgb  
.rjt application/vnd.rn-realsystem-rjt  
.rle application/x-rle  
.rmf application/vnd.adobe.rmf  
.rmj application/vnd.rn-realsystem-rmj  
.rmp application/vnd.rn-rn_music_package  
.rmvb application/vnd.rn-realmedia-vbr  
.rnx application/vnd.rn-realplayer  
.rpm audio/x-pn-realaudio-plugin  
.rms application/vnd.rn-realmedia-secure  
.rmx application/vnd.rn-realsystem-rmx  
.rsml application/vnd.rn-rsml  
.rtf application/msword  
.rv video/vnd.rn-realvideo  
.sat application/x-sat  
.sdw application/x-sdw  
.slb application/x-slb  
.rtf application/x-rtf  
.sam application/x-sam  
.sdp application/sdp  
.sit application/x-stuffit  
.sld application/x-sld  
.smi application/smil  
.smk application/x-smk  
.smil application/smil  
.spc application/x-pkcs7-certificates  
.spl application/futuresplash  
.ssm application/streamingmedia  
.stl application/vnd.ms-pki.stl  
.sst application/vnd.ms-pki.certstore  
.tdf application/x-tdf  
.tga application/x-tga  
.sty application/x-sty  
.swf application/x-shockwave-flash  
.tg4 application/x-tg4  
.tif application/x-tif  
.vdx application/vnd.visio  
.vpg application/x-vpeg005  
.vsd application/x-vsd  
.vst application/vnd.visio  
.vsw application/vnd.visio  
.vtx application/vnd.visio  
.torrent application/x-bittorrent  
.vda application/x-vda  
.vsd application/vnd.visio  
.vss application/vnd.visio  
.vst application/x-vst  
.vsx application/vnd.visio  
.wb1 application/x-wb1  
.wb3 application/x-wb3  
.wiz application/msword  
.wk4 application/x-wk4  
.wks application/x-wks  
.wb2 application/x-wb2  
.wk3 application/x-wk3  
.wkq application/x-wkq  
.wmf application/x-wmf  
.wmd application/x-ms-wmd  
.wp6 application/x-wp6  
.wpg application/x-wpg  
.wq1 application/x-wq1  
.wri application/x-wri  
.ws application/x-ws  
.wmz application/x-ms-wmz  
.wpd application/x-wpd  
.wpl application/vnd.ms-wpl  
.wr1 application/x-wr1  
.wrk application/x-wrk  
.ws2 application/x-ws  
.xdp application/vnd.adobe.xdp  
.xfd application/vnd.adobe.xfd  
.xfdf application/vnd.adobe.xfdf  
.xls application/vnd.ms-excel  
.xwd application/x-xwd  
.sis application/vnd.symbian.install  
.x_t application/x-x_t  
.apk application/vnd.android.package-archive  
.x_b application/x-x_b  
.sisx application/vnd.symbian.install  
.ipa application/vnd.iphone  
.xap application/x-silverlight-app  
.xlw application/x-xlw  
.xpl audio/scpls  
.anv application/x-anv  
.uin application/x-icq  

Text Type

文件擴展名 Content-Type(Mime-Type) 描述
.323 text/h323  
.biz text/xml  
.cml text/xml  
.asa text/asa  
.asp text/asp  
.css text/css 層疊樣式表(英語:Cascading Style Sheets,簡寫CSS),又稱串樣式列表、層次結構式樣式表文件,一種用來為結構化文檔(如HTML文檔或XML應用)添加樣式(字體、間距和顏色等)的計算機語言,由W3C定義和維護。
.csv text/csv 逗號分隔值(Comma-Separated Values,CSV,有時也稱為字符分隔值,因為分隔字符也可以不是逗號),其文件以純文本形式存儲表格數據(數字和文本)。
.dcd text/xml  
.dtd text/xml  
.ent text/xml  
.fo text/xml  
.htc text/x-component  
.html text/html  
.htx text/html  
.htm text/html  
.htt text/webviewhtml  
.jsp text/html  
.math text/xml  
.mml text/xml  
.mtx text/xml  
.plg text/html  
.rdf text/xml  
.rt text/vnd.rn-realtext  
.sol text/plain  
.spp text/xml  
.stm text/html  
.svg text/xml  
.tld text/xml  
.txt text/plain 純文字內容
.uls text/iuls  
.vml text/xml  
.tsd text/xml  
.vcf text/x-vcard  
.vxml text/xml  
.wml text/vnd.wap.wml  
.wsdl text/xml  
.wsc text/scriptlet  
.xdr text/xml  
.xql text/xml  
.xsd text/xml  
.xslt text/xml  
.xml text/xml  
.xq text/xml  
.xquery text/xml  
.xsl text/xml  
.xhtml text/html  
.odc text/x-ms-odc  
.r3t text/vnd.rn-realtext3d  
.sor text/plain  

Audio Type

文件擴展名 Content-Type(Mime-Type) 描述
.acp audio/x-mei-aac  
.aif audio/aiff  
.aiff audio/aiff  
.aifc audio/aiff  
.au audio/basic  
.la1 audio/x-liquid-file  
.lavs audio/x-liquid-secure  
.lmsff audio/x-la-lms  
.m3u audio/mpegurl  
.midi audio/mid  
.mid audio/mid  
.mp2 audio/mp2  
.mp3 audio/mp3  
.mp4 audio/mp4 MP4,全稱MPEG-4 Part 14,是一種使用MPEG-4的多媒體計算機文件格式,擴展名為.mp4,以存儲數字音頻及數字視頻為主。
.mnd audio/x-musicnet-download  
.mp1 audio/mp1  
.mns audio/x-musicnet-stream  
.mpga audio/rn-mpeg  
.pls audio/scpls  
.ram audio/x-pn-realaudio  
.rmi audio/mid  
.rmm audio/x-pn-realaudio  
.snd audio/basic  
.wav audio/wav  
.wax audio/x-ms-wax  
.wma audio/x-ms-wma  

Video Type

文件擴展名 Content-Type(Mime-Type) 描述
.asf video/x-ms-asf  
.asx video/x-ms-asf  
.avi video/avi  
.IVF video/x-ivf  
.m1v video/x-mpeg  
.m2v video/x-mpeg  
.m4e video/mpeg4  
.movie video/x-sgi-movie  
.mp2v video/mpeg  
.mp4 video/mpeg4 MP4,全稱MPEG-4 Part 14,是一種使用MPEG-4的多媒體計算機文件格式,擴展名為.mp4,以存儲數字音頻及數字視頻為主。
.mpa video/x-mpg  
.mpe video/x-mpeg  
.mpg video/mpg  
.mpeg video/mpg  
.mps video/x-mpeg  
.mpv video/mpg  
.mpv2 video/mpeg  
.wm video/x-ms-wm  
.wmv video/x-ms-wmv  
.wmx video/x-ms-wmx  
.wvx video/x-ms-wvx  

Image Type

文件擴展名 Content-Type(Mime-Type) 描述
.tif image/tiff 標簽圖像文件格式(Tagged Image File Format,簡寫為TIFF)是一種主要用來存儲包括照片和藝術圖在內的圖像的文件格式。它最初由Aldus公司與微軟公司一起為PostScript打印開發。
.fax image/fax  
.gif image/gif 圖像互換格式(GIF,Graphics Interchange Format)是一種位圖圖形文件格式,以8位色(即256種顏色)重現真彩色的圖像。
.ico image/x-icon  
.jfif image/jpeg  
.jpe image/jpeg  
.jpeg image/jpeg JPEG是一種針對相片圖像而廣泛使用的一種有損壓縮標准方法。
.jpg image/jpeg  
.net image/pnetvue  
.png image/png 便攜式網絡圖形(Portable Network Graphics,PNG)是一種無損壓縮的位圖圖形格式,支持索引、灰度、RGB三種顏色方案以及Alpha通道等特性。
.rp image/vnd.rn-realpix  
.tif image/tiff  
.tiff image/tiff  
.wbmp image/vnd.wap.wbmp  

Message Type

文件擴展名 Content-Type(Mime-Type) 描述
.eml message/rfc822  
.mht message/rfc822  
.mhtml message/rfc822  
.nws message/rfc822  

Drawing Type

文件擴展名 Content-Type(Mime-Type) 描述
.907 drawing/907  
.slk drawing/x-slk  
.top drawing/x-top  

Java Type

文件擴展名 Content-Type(Mime-Type) 描述
.class java/*  
.java java/*  

Other Type

文件擴展名 Content-Type(Mime-Type) 描述
.dwf Model/vnd.dwf  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM