笔记:获取url的真实文件格式

2020-08-30  本文已影响0人  IFLEU

有个地方要用到url地址转换为文件,但是url的地址不能得出明确的后缀格式,于是使用了URLConnection的方法。
URLConnection的方法里有两个方法:

第一个是根据文件名来判断格式的,略过。第二个是通过流前面的几个字节来判断文件的格式。

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
     }

可行

上一篇下一篇

猜你喜欢

热点阅读