我问这个question之前和Evgeniy Dorofeev回答了它。虽然只为直接链接工作,但我接受了他的回答。他刚刚告诉我如何从直接链接检查内容类型:
String requestUrl = "https://dl-ssl.google.com/android/repository/android-14_r04.zip";
URL url = new URL(requestUrl);
URLConnection c = url.openConnection();
String contentType = c.getContentType();
据我所知,有两种 URL
类型可以下载文件:
- 直接链接。例如:https://dl-ssl.google.com/android/repository/android-14_r04.zip .从这个链接,我们可以直接下载数据并获取文件名,包括文件扩展名(在这个链接中,
.zip
扩展名)。这样我们就可以知道要下载什么文件了。您可以尝试从该链接下载。 - 间接链接。例如:http://www.example.com/directory/download?file=52378 .您是否尝试过从 Google 云端硬盘下载数据?当从 Google Drive 下载数据时,它会给你一个间接的链接,比如上面的链接。我们永远不知道链接是否包含文件或网页。此外,我们不知道文件名和文件扩展名是什么,因为这种链接类型不明确且随机。
我需要检查它是文件还是网页。如果内容类型是文件,我必须下载它。
所以我的问题是:
- 如何检查非直接链接的内容类型?
- 如该问题的评论所示,HTTP 重定向能否解决问题?
感谢您的帮助。
最佳答案
打开 URLConnection 后,将返回一个头文件。里面有一些关于这个文件的信息。你可以从那里拉你想要的东西。例如:
URLConnection u = url.openConnection();
long length = Long.parseLong(u.getHeaderField("Content-Length"));
String type = u.getHeaderField("Content-Type");
length
是以字节为单位的文件大小,type
类似于 application/x-dosexec
或 application/x- rar
.
关于java - 从 URL 检查内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28145559/