0

我需要检查一个 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 类型,那将是完美的。

4

0 回答 0