问题发生:
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
然后继续各种找,最后解决了...
再看一下无后缀名的判断..