2017-04-08 5 views
0

Ich verwende diesen Code später herunterladen Sie eine Datei von einer URL.Java URLConnection Header-Name

  URL url = new URL("http://smarthome-de.censored.net/Installer.zip"); 
      URLConnection conn = url.openConnection(); 
      int size = conn.getContentLength(); 
      String type = conn.getContentType(); 

Gibt es eine Möglichkeit, den Dateinamen von einer URL abzufangen? Das kann ich "Installer.zip" in einem String speichern, ohne diesen Wert wegen seiner bekannten zu erhalten.

Ich fand heraus getContentType() gibt mir Typ. Leider finde ich keine Methode für den Namen.

Antwort

0

Sie können die Dateinamen aus den Content-Disposition Header erhalten:

String contentDisposition = conn.getHeaderField("Content-Disposition"); 

Bitte beachten Sie, dass dieser Header vom Server gesetzt und garantiert nicht anwesend sein. HTTP-Clients, die Dateien herunterladen, verwenden das Content-Disposition, wenn es vorhanden ist, oder den letzten Teil der URL, der in Ihrem Beispiel Installer.zip wäre.

Der Content-Disposition-Header Inhalt ist so etwas wie:

Content-Disposition: attachment; filename="Installer.zip" 

Sie haben den Header-Wert zu analysieren die Dateinamen Teil zu extrahieren. Für weitere Informationen können Sie einen Blick hier:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

Verwandte Themen