Web サーバーからファイルをダウンロードし、サーバーがファイルと共に送信している元のファイル名で保存しようとしています。ダウンロードはうまくいきますが、実際のファイル名を取得できません。
実際の例として、このファイル(Foxit PDF Reader) をダウンロードしようとしています。
Chrome などのブラウザでこのリンクを使用している場合、ブラウザはバージョンなどを含む正確な名前でファイルをダウンロードします。この名前はどこから取得できますか? ヘッダー情報を読み取って検索しましContent-Disposition
たが、サーバーはこの情報を送信しません。正確なファイル名はどこから取得できますか?
私はこのようなことを試しました:
try {
URL webfile = new URL("http://www.foxitsoftware.com/downloads/latest.php?product=Foxit-Reader");
URLConnection con = webfile.openConnection();
Map map = con.getHeaderFields();
Set set = map.entrySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
} catch (IOException ex) {
System.out.println("Error: "+ex.getMessage());
}
出力からわかるように、次のものはありませんContent-Disposition
。
null=[HTTP/1.1 200 OK]
ETag=["244005-f36d40-4d003f3868000"]
Date=[Sat, 08 Dec 2012 12:29:02 GMT]
Content-Length=[15953216]
Last-Modified=[Tue, 04 Dec 2012 10:01:36 GMT]
Content-Type=[application/x-msdos-program]
Connection=[close]
Accept-Ranges=[bytes]
Server=[Apache/2.2.16 (Debian)]
では、どうすれば正確なファイル名を取得できますか? ブラウザのリンクは、 という名前のファイルをダウンロードしますFoxitReader544.11281_enu_Setup.exe
。
何か案は?!