Java获取URL链接的文件类型

开发 后端
在写网络爬虫的时候,需要根据链接来获取文件类型,将内容正确存储。之前我都是根据链接的后缀来判断的。URLConnection提供了两种方法可以猜测数据的MIME类型。详细请看下文

在写网络爬虫的时候,需要根据链接来获取文件类型,将内容正确存储。之前我都是根据链接的后缀来判断的,比如:

http://img12.360buyimg.com/da/20120330/88_31_ZySDre.jpg

这个链接指向的文件就是个jpg文件。但是后来发现有诸如

http://jprice.360buyimg.com/getSkuPriceImgService.action?skuId=1850001109&origin=1&webSite=1&type=1的链接,这招就不灵了。后来谷歌百度了一下也没发现解决办法。后来机缘巧合在Java Network Programming上找到了一个办法:

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类型。

第一个是:

  1. public static String guessContentTypeFromName(String name) 

这个方法根据URL文件部分的后缀名来判断类型,跟之前我的方法一样。这个不能解决上面那个问题。

第二个是:

  1. public static String guessContentTypeFromStream(InputStream in)  

这个方法是根据流的前面几个字节来判断类型,这个就不需要文件后缀名了,完全可以解决上面那个问题。

测试代码如下:

  1. BufferedInputStream bis = null;  
  2. HttpURLConnection urlconnection = null;  
  3. URL url = null;          
  4.         url = new URL(strUrl);  
  5.     urlconnection = (HttpURLConnection) url.openConnection();  
  6.     urlconnection.connect();  
  7. bis = new BufferedInputStream(urlconnection.getInputStream());  
  8.     System.out.println("file type:"+HttpURLConnection.guessContentTypeFromStream(bis)); 

原文链接:http://www.cnblogs.com/lisperl/archive/2012/05/21/2511224.html

责任编辑:林师授 来源: lisperl的博客
相关推荐

2010-03-10 09:27:36

Linux链接文件类型

2021-02-05 08:03:52

Java

2010-01-05 15:32:33

2010-03-01 15:34:38

Linux文件类型

2010-01-12 11:37:06

Linux常见文件

2009-10-21 10:50:59

Linux文件类型

2017-06-09 06:14:41

2019-04-12 14:26:17

Linux命令文件

2009-11-16 12:17:46

PHP上传文件类型

2010-05-21 10:02:56

2011-06-01 10:48:28

Android系统

2010-04-02 13:15:01

Oracle跟踪

2019-01-14 09:20:35

Linux类型文件

2010-05-25 17:01:44

2009-08-12 16:44:13

.NET文件类型

2023-12-04 15:42:10

类型Linux

2009-07-20 18:06:26

ASP.NET限制上传

2019-01-22 13:46:01

LinuxUnix系统命令行

2019-08-25 23:57:00

命令行Linux移动文件

2013-05-31 10:36:56

ASP.net文件上传
点赞
收藏

51CTO技术栈公众号