Telecharger un fichier a partir d'une url

Soyez le premier à donner votre avis sur cette source.

Snippet vu 40 568 fois - Téléchargée 19 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

Messages postés
8
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
26 mai 2014

Merci infiniment Jaoued.
Bonne journée
Messages postés
13
Date d'inscription
dimanche 29 février 2004
Statut
Membre
Dernière intervention
20 novembre 2015

il faut une url du type http://...
Messages postés
8
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
26 mai 2014

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.
Messages postés
13
Date d'inscription
dimanche 29 février 2004
Statut
Membre
Dernière intervention
20 novembre 2015

le meilleur moyens de le savoir c'est encore d'essayer, mais à priori je dirais oui.
Messages postés
8
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
26 mai 2014

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.