有個(gè)地方要用到url地址轉(zhuǎn)換為文件,但是url的地址不能得出明確的后綴格式轴猎,于是使用了URLConnection的方法嵌莉。
URLConnection的方法里有兩個(gè)方法:
- guessContentTypeFromName
- guessContentTypeFromStream
第一個(gè)是根據(jù)文件名來(lái)判斷格式的,略過(guò)捻脖。第二個(gè)是通過(guò)流前面的幾個(gè)字節(jié)來(lái)判斷文件的格式锐峭。
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
}
通過(guò)第二個(gè)方法獲得的格式輸出null,方法也不是特別合適可婶,有些格式也判斷不出來(lái)沿癞。
最后通過(guò)url的Content-Type得出了文件的格式。
Content-Type(內(nèi)容類(lèi)型)矛渴,一般是指網(wǎng)頁(yè)中存在的 Content-Type椎扬,用于定義網(wǎng)絡(luò)文件的類(lèi)型和網(wǎng)頁(yè)的編碼,決定瀏覽器將以什么形式具温、什么編碼讀取這個(gè)文件蚕涤,這就是經(jīng)常看到一些 PHP
網(wǎng)頁(yè)點(diǎn)擊的結(jié)果卻是下載一個(gè)文件或一張圖片的原因铣猩。Content-Type 標(biāo)頭告訴客戶端實(shí)際返回的內(nèi)容的內(nèi)容類(lèi)型揖铜。
這里引用了依賴
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-core -->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.22</version>
</dependency>
測(cè)試使用
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
}
可行