2010-05-13 11 views
1

L'URL: http://www.teamliquid.net/replay/download.php?replay=1830 est un lien de téléchargement vers un fichier .rep.Téléchargement de contenu multimédia dans Java à partir de pages php

Ma question est la suivante:. Comment télécharger ce contenu en Java connaître le nom du fichier représentant d'origine afin de l'enregistrer avec un préfixe défini comme chemin/_ représentant

// je tentais de courir wget de Java mais je ne vois pas comment obtenir le nom du fichier d'origine.

Répondre

1

Obtenir l'URL redirigée,

http://www.teamliquid.net/replay/upload/coco%20vs%20snssoflsekd.rep

Vous pouvez obtenir le nom de cette URL.

Il est difficile d'obtenir l'URL redirigée. Voir ma réponse à cette question sur la façon de le faire avec Apache HttpClient 4,

HttpClient 4 - how to capture last redirect URL

EDIT: Voici un exemple en utilisant HttpClient 4.0,

String url = "http://www.teamliquid.net/replay/download.php?replay=1830"; 
HttpClient httpClient = new DefaultHttpClient(); 
HttpGet httpget = new HttpGet(url); 
HttpContext context = new BasicHttpContext(); 
HttpResponse response = httpClient.execute(httpget, context); 
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) 
    throw new IOException(response.getStatusLine().toString()); 
HttpUriRequest currentReq = (HttpUriRequest) context.getAttribute( 
    ExecutionContext.HTTP_REQUEST); 
String currentUrl = URLDecoder.decode(currentReq.getURI().toString(), "UTF-8"); 
int i = currentUrl.lastIndexOf('/'); 
String fileName = null; 
if (i < 0) { 
    fileName = currentUrl; 
} else { 
    fileName = currentUrl.substring(i+1); 
} 
OutputStream os = new FileOutputStream("/tmp/" + fileName); 
InputStream is = response.getEntity().getContent(); 
byte[] buf = new byte[4096]; 
int read; 
while ((read = is.read(buf)) != -1) { 
    os.write(buf, 0, read); 
} 
os.close(); 

Après l'exécution de ce code, je reçois ce fichier,

/tmp/coco vs snssoflsekd.rep 
+0

Merci beaucoup, vous avez reformulé le problème et vous avez donné la solution. Est-ce que HttpClient peut aussi télécharger du contenu? – jmcejuela

+0

Voir mon edit avec le code de travail. –