0

以下のコードを使用してファイルをダウンロードしようとしています。ダウンロードするファイルのファイル名とmimeタイプを確認する必要があります。ダウンロード元のURLにファイル名が含まれていません。以下で使用されているバッファリングされたストリームに関連するメソッドを確認しましたが、それを実行するメソッドはありません。

    con = (HttpURLConnection) url.openConnection();

    //authenticate this request
    if (passwordAuthentication != null) {
        String auth = passwordAuthentication.getUserName()+":"+passwordAuthentication.getPassword();
        con.setRequestProperty("Authentication", Base64.encodeBase64(auth.getBytes()).toString());
    }

    BufferedInputStream bis = new BufferedInputStream(con.getInputStream());
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file.getName()));
    while ((i = bis.read()) != -1) {
        bos.write(i);
    }
    bos.flush();
    bis.close();

を介して取得できることはわかりますが、ダウンロードされている実際のファイルのContentTypeはString contentType = con.getHeaderField("Content-Type");返されません。text/html

編集: これは重複する質問ではありません。他の方法では、以下で説明する解決策は提供されません。

ファイル拡張子を付けずにファイルを保存して使用しようとしましMagicMatch match = Magic.getMagicMatch(file, true);たが、が返されますtext/plain。ファイル拡張子を付けずに保存したからだと思います。

4

1 に答える 1

1

Java 7では、 Files.probeContentType(path)を使用できるようになり ました。

于 2013-03-06T04:45:15.113 に答える