Webサーバーからファイルをダウンロードし、サーバーがファイルと共に送信している元のファイル名でファイルを保存しようとしています。ダウンロードはうまく動作しますが、実際のファイル名を取得することはできません。httpダウンロードファイルからファイル名を取得
実際の例として、this file(Foxit PDF Reader)をダウンロードしようとしています。
このリンクをChromeのようなブラウザで使用している場合、ブラウザはバージョンなどの正確な名前でファイルをダウンロードします。この名前はどこから取得できますか?私はヘッダー情報を読もうとしましたが、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)]
は、どのように私は正確なファイル名を取得することができます:あなたは出力で見ることができるように
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
がある:
FoxitReader544.11281_enu_Setup.exe
という名前のファイルをダウンロードします。
どのようなアイデアですか?
うわー!私はGETが 'HTTP/1.1 200 OK'情報のためにOKだったと思いましたか?なぜ私は302を取得する必要があります200を得たか? – Marco
パラメータが設定されている場合は、自動的にリダイレクトされます。 [** 'getFollowRedirects()' **](http://docs.oracle.com/javase/1.5.0/docs/api/java/net/HttpURLConnection.html#getFollowRedirects())および[** ' setFollowRedirects() '**](http://docs.oracle.com/javase/1.5.0/docs/api/java/net/HttpURLConnection.html#setFollowRedirects(boolean)) –
ニース!どうもありがとうございました!受け入れるには2分以上待つ必要がある...;) – Marco