Sto cercando di scaricare un file da un server web e salvarlo con il nome file originale che il server sta inviando con il file. Il download funziona molto bene, ma non riesco a ottenere il vero nome del file.Recupera nome file dal file di download http
Per un esempio reale sto cercando di scaricare this file (Foxit PDF Reader).
Se si utilizza questo collegamento in un browser come Chrome, il browser scarica il file con un nome esatto inclusa la versione ecc. Da dove viene visualizzato questo nome? Ho provato a leggere le informazioni dell'intestazione e stavo cercando il Content-Disposition
ma il server non ha inviato questa informazione. Da dove viene il nome esatto del file?
Ho provato qualcosa di simile:
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());
}
Come si può vedere in uscita non c'è 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)]
Così come posso recuperare il nome del file esatto? Il collegamento in un browser scarica un file con il nome FoxitReader544.11281_enu_Setup.exe
.
Qualche idea ?!
Wow! Ho indovinato che GET era Ok a causa delle informazioni su 'HTTP/1.1 200 OK' ?! Perché ho ricevuto un 200 se dovessi ottenere un 302 ?! – Marco
Segue automaticamente i reindirizzamenti, se il parametro è impostato. Vedi [** 'getFollowRedirects()' **] (http://docs.oracle.com/javase/1.5.0/docs/api/java/net/HttpURLConnection.html#getFollowRedirects()) e [** ' setFollowRedirects() '**] (http://docs.oracle.com/javase/1.5.0/docs/api/java/net/HttpURLConnection.html#setFollowRedirects (booleano)) –
Bello! Grazie mille! Devi aspettare altri 2 minuti per accettare ...;) – Marco