笔记:获取url的真实文件格式
2020-08-30 本文已影响0人
IFLEU
有个地方要用到url地址转换为文件,但是url的地址不能得出明确的后缀格式,于是使用了URLConnection的方法。
URLConnection的方法里有两个方法:
- guessContentTypeFromName
- guessContentTypeFromStream
第一个是根据文件名来判断格式的,略过。第二个是通过流前面的几个字节来判断文件的格式。
public static void main(String[] args) throws IOException {
URL urlPath = new URL("xxxxxxxx");
String type = HttpURLConnection.guessContentTypeFromStream(URLUtil.getStream(urlPath));
System.out.println(type); //null
}
通过第二个方法获得的格式输出null,方法也不是特别合适,有些格式也判断不出来。
最后通过url的Content-Type得出了文件的格式。
Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP
网页点击的结果却是下载一个文件或一张图片的原因。Content-Type 标头告诉客户端实际返回的内容的内容类型。
这里引用了依赖
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-core -->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.22</version>
</dependency>
测试使用
public static void main(String[] args) throws IOException, MimeTypeException {
URL urlPath = new URL("xxxxxxxx");
String contentType = urlPath.openConnection().getContentType();
MimeTypes allTypes = MimeTypes.getDefaultMimeTypes();
MimeType jpeg = allTypes.forName(contentType);
System.out.println(jpeg.getExtension()); //.pdf
}
可行