我需要检查一个 URL 以验证该 URL 是否直接下载任何类型的文件。
目前,我这样做:
URL url = new URL(uri);
HttpURLConnection huc = (HttpURLConnection) url.openConnection();
huc.setRequestMethod("HEAD");
int responseCode = huc.getResponseCode();
//URL url = new URL(uri);
URLConnection connection = url.openConnection();
InputStream in = connection.getInputStream();
try (InputStream is = in; BufferedInputStream bis = new BufferedInputStream(is);) {
AutoDetectParser parser = new AutoDetectParser();
Detector detector = parser.getDetector();
Metadata md = new Metadata();
md.add(Metadata.RESOURCE_NAME_KEY, FilenameUtils.getBaseName(url.getPath()));
MediaType mediaType = detector.detect(bis, md);
String mime = mediaType.toString();
if (type.equals(IMAGE_HEADER) && mime.contains(IMAGE_HEADER.toLowerCase())) {
return true;
} else if (type.equals(IMAGE_HEADER) && !mime.contains(IMAGE_HEADER.toLowerCase())) {
return false;
} else if (type.equals(DOCUMENT_HEADER) && mime.contains("pdf")) {
return true;
} else if (type.equals(DOCUMENT_HEADER) && !mime.contains("pdf")) {
return false;
} else
return false;
}
}
但是,这会下载文件,我必须检查最多 1000 次,所以,我需要检查 URL 是否有可下载的文件而不下载二进制文件。这可能吗?
此外,如果可以在不下载整个文件的情况下检查其 MIME 类型,那将是完美的。