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

然后继续各种找,最后解决了...

 再看一下无后缀名的判断..

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值