Ich versuche, eine Datei von einem Webserver herunterladen und speichern Sie sie unter dem ursprünglichen Dateinamen, den der Server mit der Datei sendet. Das Herunterladen funktioniert sehr gut, aber ich kann den echten Dateinamen nicht finden.Abrufen des Dateinamens von HTTP-Download-Datei
Für ein echtes Beispiel versuche ich this file (Foxit PDF Reader) herunterladen.
Wenn ich diesen Link in einem Browser wie Chrome verwende, lädt der Browser die Datei mit einem genauen Namen einschließlich Version usw. Woher bekomme ich diesen Namen? Ich habe versucht, die Header-Informationen zu lesen und suchte nach Content-Disposition
, aber der Server sendet diese Informationen nicht. Woher bekomme ich den genauen Dateinamen?
Ich habe versucht, so etwas wie dieses:
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());
}
Wie Sie in der Ausgabe ist kein Content-Disposition
dort sehen können:
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)]
Wie kann ich den genauen Dateinamen abrufen? Der Link in einem Browser lädt eine Datei mit dem Namen FoxitReader544.11281_enu_Setup.exe
herunter.
Irgendwelche Ideen ?!
Wow! Ich vermutete, dass das GET OK war wegen der HTTP/1.1 200 OK Information ?! Warum habe ich eine 200 bekommen, wenn ich eine 302 bekommen sollte ?! – Marco
Es folgt Umleitungen automatisch, wenn der Parameter festgelegt ist. Siehe [** 'getFollowRedirects()' **] (http://docs.oracle.com/javase/1.5.0/docs/api/java/net/HttpURLConnection.html#getFollowRedirects()) und [** ' setFollowRedirects() '**] (http://docs.oracle.com/javase/1.5.0/docs/api/java/net/HttpURLConnection.html#setFollowRedirects (boolean)) –
Schön! Vielen Dank! Müssen warten noch 2 Minuten zu akzeptieren ...;) – Marco