Telecharger un fichier a partir d'une url

Soyez le premier à donner votre avis sur cette source.

Snippet vu 43 199 fois - Téléchargée 21 fois

Contenu du snippet

Cette classe permet de récupéré un fichier sur un site internet ou sur un serveur interne. ca peut être utile quand on a besoin d'ouvrir un document à l'utilisateur qui se trouve sur le web par exemple.

Elle s'utilise en passant en paramètre l'url du fichier à télécharger. Le fichier récupéré est alors stocké en local. Si on veut le stocker ailleurs on peut alors appeler la méthode surchargé qui prend un paramètre en plus qui est le fichier de destination.

Voila j'espère que ce code vous sera utile.

Source / Exemple :


package com.genoyer.chrisDLPkg.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class UrlHelper {

	public static void downloadFile(String adresse) {

		downloadFile(adresse, null);
	}

	public static void downloadFile(String adresse, File dest) {
		BufferedReader reader = null;
		FileOutputStream fos = null;
		InputStream in = null;
		try {

			// création de la connection
			URL url = new URL(adresse);
			URLConnection conn = url.openConnection();
			System.out.println(adresse);

			String FileType = conn.getContentType();
			System.out.println("FileType : " + FileType);

			int FileLenght = conn.getContentLength();
			if (FileLenght == -1) {
				throw new IOException("Fichier non valide.");
			}

			// lecture de la réponse
			in = conn.getInputStream();
			reader = new BufferedReader(new InputStreamReader(in));
			if (dest == null) {
				String FileName = url.getFile();
				FileName = FileName.substring(FileName.lastIndexOf('/') + 1);
				dest = new File(FileName);
			}
			fos = new FileOutputStream(dest);
			byte[] buff = new byte[1024];
			int l = in.read(buff);
			while (l > 0) {
				fos.write(buff, 0, l);
				l = in.read(buff);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				fos.flush();
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				reader.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

A voir également

Ajouter un commentaire Commentaires
developperjava Messages postés 8 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 26 mai 2014
26 mai 2011 à 12:26
Merci infiniment Jaoued.
Bonne journée
jaoued zahraoui Messages postés 13 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 20 novembre 2015
26 mai 2011 à 11:42
il faut une url du type http://...
developperjava Messages postés 8 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 26 mai 2014
26 mai 2011 à 09:51
j'ai essayé avec :
downloadFile("\\IP_SERVEUR\\DOSSIER\\SOUS_DOSSIER\\FICHIER.ZIP", new File("F:\\UPLOAD"));

mais j'ai eu cette erreur :java.net.MalformedURLException: no protocol: \IP_SERVEUR\DOSSIER\SOUS_DOSSIER\FICHIER.ZIP.

Exception in thread "main" java.lang.NullPointerException

je pense qu'il s'agit d'un probleme au niveau d'argument "adresse" , parce que je ne sais pas comment le determiner et merci pour ton aide jaoued.
jaoued zahraoui Messages postés 13 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 20 novembre 2015
26 mai 2011 à 09:10
le meilleur moyens de le savoir c'est encore d'essayer, mais à priori je dirais oui.
developperjava Messages postés 8 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 26 mai 2014
26 mai 2011 à 09:07
j'ai un fichier .zip dans un serveur local c'est possible de le telecharger avec cette classe ?
Merci
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.