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
然后继续各种找,最后解决了...
再看一下无后缀名的判断..
HTTP Content-type 对照表
Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,比如用PHP输出图片文件、JSON数据、XML文件等非HTML内容时,就必须用header函数来指定Content-Type,才能达到输出一张图片或是其它指定内容类型的需求。
Application Type
文件扩展名 | Content-Type(Mime-Type) | 描述 |
---|---|---|
. | application/x- | |
.* | application/octet-stream | 二进制流,不知道下载文件类型 |
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 | |
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 |
Java获取URL链接的文件类型的更多相关文章
- java 获取URL链接 内容
public static String getHtmlConentByUrl(String ssourl) { try { URL url = new URL( ...
- Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL
Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL >>>>>>>>>>>>> ...
- Java获取URL对应的资源
Java获取URL对应的资源 认识IP.认识URL是进行网络编程的第一步.java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源. 一.认识URL ...
- C#开发BIMFACE系列9 服务端API之获取应用支持的文件类型
系列目录 [已更新最新开发文章,点击查看详细] BIMFACE最核心能力之一是工程文件格式转换.无需安装插件,支持数十种工程文件格式在云端转换,完整保留原始文件信息.开发者将告别原始文件解析烦 ...
- java 获取url及url参数解析
java 获取url及url参数解析 一.url编码:URLEncoder.encode(userName); 二.url解码: URLDecoder.decode(userName);
- Java根据字节数据判断文件类型
通常,在WEB系统中,上传文件时都需要做文件的类型校验,大致有如下几种方法: 1. 通过后缀名,如exe,jpg,bmp,rar,zip等等. 2. 通过读取文件,获取文件的Content-type来 ...
- java通过文件头来判断文件类型
import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; import java.ut ...
- js 获取url链接的任意参数
<script> //先获取 当前的url链接 var url = location.href; //把url 链接切割为数组 var arr = url.split("&quo ...
- Java获取URL中的顶级域名domain的工具类
方式一: import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays; import jav ...
随机推荐
- NOIp 2018 普及组
T1标题统计 传送门 题目描述 凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大.小写英文字母.数字字符.空格和换行符.统计标题字 符数时,空格和换行符不计算在内. ...
- CAS单点登录安装笔记
http://lib.iteye.com/blog/166619 https://www.cnblogs.com/zhenyulu/archive/2013/01/22/2870838.html
- Docker 图形化页面管理工具使用
一.Docker图形化工具 docker 图形页面管理工具常用的有三种,DockerUI ,Portainer ,Shipyard .DockerUI 是 Portainer 的前身,这三个工具通过d ...
- window下的窗口事件-js
window.onfocus = function(){ // 窗口获取焦点事件}; window.onblur= function(){ // 窗口失去焦点事件};有弊端,亲测. 所以我还有一个更好 ...
- Codeforces Round #254 (Div. 1) D - DZY Loves Strings
D - DZY Loves Strings 思路:感觉这种把询问按大小分成两类解决的问题都很不好想.. https://codeforces.com/blog/entry/12959 题解说得很清楚啦 ...
- java 常用面试题
基础问题和思想:1.抽象类和接口的区别(单纯的语法区别只能给一半分,要说出来适用场景):2.hashcode()和equals()的关系:3.HashMap(Set)底层机制(用到的数据结构以及代码原 ...
- 使用Synchronized块同步变量
我们可以通过synchronized块来同步特定的静态或非静态方法.要想实现这种需求必须为这些特定的方法定义一个类变量,然后将这些方法的代码用synchronized块括起来,并将这个类变量作为参数传 ...
- BZOJ.1024.[SCOI2009]生日快乐(记忆化搜索)
题目链接 搜索,枚举切的n-1刀. 对于长n宽m要切x刀,可以划分为若干个 长n'宽m'要切x'刀 的子问题,对所有子问题的答案取max 对所有子问题的方案取min 就是当前状态答案. 这显然是会有很 ...
- jsp的9大内置对象和4大作用域
- UVALive 6912 Prime Switch 状压DP
Prime Switch 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8& ...