Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TELECHARGER UN FICHIER A PARTIR D'UNE URL


Information sur la source

Catégorie :Reseaux et Internet Classé sous : téléchargement, fichier, url, http Niveau : Initié Date de création : 13/10/2005 Date de mise à jour : 25/03/2007 13:23:25 Vu : 32 907

Note :
8,08 / 10 - par 12 personnes
8,08 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (46)
Ajouter un commentaire et/ou une note


Description

ce programme telecharge un fichier a partir d'une url donne par parametre !!!
il telecharge le fichier dans le repertoire local de l'application
 

Source

  • //
  • import java.net.*;
  • import java.io.*;
  • public class UrlUtils {
  • public UrlUtils(String HOST) {
  • try {
  • URL racine = new URL(HOST);
  • getFile(racine);
  • } catch (MalformedURLException e) {
  • System.err.println(HOST + " : URL non comprise.");
  • } catch (IOException e) {
  • System.err.println(e);
  • }
  • }
  • public void getFile(URL u) throws IOException {
  • URLConnection uc = u.openConnection();
  • String FileType = uc.getContentType();
  • int FileLenght = uc.getContentLength();
  • if (FileLenght == -1) {
  • throw new IOException("Fichier non valide.");
  • }
  • InputStream in = uc.getInputStream();
  • String FileName = u.getFile();
  • FileName = FileName.substring(FileName.lastIndexOf('/') + 1);
  • FileOutputStream WritenFile = new FileOutputStream(FileName);
  • byte[]buff = new byte[1024];
  • int l = in.read(buff);
  • while(l>0)
  • {
  • WritenFile.write(buff, 0, l);
  • l = in.read(buff);
  • }
  • WritenFile.flush();
  • WritenFile.close();
  • }
  • }
// 
import java.net.*;
import java.io.*;

public class UrlUtils {

	public UrlUtils(String HOST) {

		try {
			URL racine = new URL(HOST);
			getFile(racine);
		} catch (MalformedURLException e) {
			System.err.println(HOST + " : URL non comprise.");
		} catch (IOException e) {
			System.err.println(e);
		}

	}

	public void getFile(URL u) throws IOException {
		URLConnection uc = u.openConnection();
		String FileType = uc.getContentType();
		int FileLenght = uc.getContentLength();
		if (FileLenght == -1) {
			throw new IOException("Fichier non valide.");
		}
		InputStream in = uc.getInputStream();
		String FileName = u.getFile();
		FileName = FileName.substring(FileName.lastIndexOf('/') + 1);
		FileOutputStream WritenFile = new FileOutputStream(FileName);
		byte[]buff = new byte[1024];
		int l = in.read(buff);
		while(l>0)
		{
		WritenFile.write(buff, 0, l);
		l = in.read(buff);
		}
		WritenFile.flush();
		WritenFile.close();

	}

}

Historique

25 mars 2007 13:23:25 :
on peut telecharger des fichiers de n'importe quelle taille j'ai aussi decrasser le code

Commentaires et avis

signaler à un administrateur
Commentaire de sheorogath le 17/10/2005 19:29:16 administrateur CS

laisser des commentaire avec vos notes svp !!
merci
++

signaler à un administrateur
Commentaire de GillesWebmaster le 06/01/2006 01:21:05

tu pourrais nous expliquer comment enregitrer le fichier vers une destination précise??? (ex: C:/monbazar/mesUrl/)
Merci
GillesWebmaster

signaler à un administrateur
Commentaire de sheorogath le 06/01/2006 17:55:49 administrateur CS

FileOutputStream WritenFile = new FileOutputStream("mochemin"+ "\\" +FileName);

signaler à un administrateur
Commentaire de capoueidiablo le 13/02/2006 18:38:07

Me concernant,

j'ai beau essailler d'utiliser t'as classe, il me prend bien le nom de fichier contenu dans l'url, me créer le fichier, mais ne le rempli pas, (il ne fait que 318octets) ...

une idée ?

signaler à un administrateur
Commentaire de sheorogath le 13/02/2006 18:39:16 administrateur CS

tu peut me passer l'url stp que je teste moi meme

signaler à un administrateur
Commentaire de capoueidiablo le 13/02/2006 18:43:05

wow, c'est super rapide :)
par exemple ca :
  http://radioshadowfox.webzzanine.net/sounds/Sonic 3 - FlyingBattery.rbs

les URLs sont récupérées dynamiquement et je les cast en string ... normalement y'a pas de souci

voila mon code :
  urltmp = new URL((String)lst_result.getSelectedValue());
  HTTPGetFile.getFile(urltmp);

signaler à un administrateur
Commentaire de capoueidiablo le 13/02/2006 18:51:14

Trouvé !!!

le problème survient lorsque le nom de fichier contient des espaces ... je pense qu'il faudrait les échapper ... je me penche sur le problème et je poste dès que je trouve ;)

signaler à un administrateur
Commentaire de sheorogath le 13/02/2006 18:58:25 administrateur CS

String trim()
;)

signaler à un administrateur
Commentaire de capoueidiablo le 13/02/2006 19:05:11


dans le constructeur
  // au debut juste apres le prototype du constructeur
  HOST = HOST.replace(" ", "%20"); // %20 est un espace en ascii

dans getFile(URL)
  FileName = FileName.substring(FileName.lastIndexOf('/') + 1);
  FileName = FileName.replace("%20", "_"); // et on enleve les %20 et on les remplaces par des '_'

voila, les trim c'set juste pour les espaces gauche et droit je crois bien ...

merci pour ta classe ;)

signaler à un administrateur
Commentaire de sheorogath le 13/02/2006 19:26:04 administrateur CS

ok ^^

de rien et content d'avoir pu etre utile ^^

signaler à un administrateur
Commentaire de bila5 le 29/03/2006 12:14:59

Bonjour tout le monde;
moi je cherche à telecharger un fichier (.html) mais j'arrive pas à le faire avec votre programme car ce que j'ai constaté qu'avec votre programme il faut donner l'url du fichier en spécifiant à la fin l'extention par exemple(http://www.liberte-algerie//LA UNE.pdf) ou n'importe quelle autre extention; or moi je cherche à telecharger la page d'acceuil de ce site(http://www.liberte-algerie) tout court mais avec cette url l'execution du  programme leve des exeptions et je sais pas quoi fare est ce que quelqu'un peut m'aider c'est urgent!!

signaler à un administrateur
Commentaire de sheorogath le 29/03/2006 14:53:59 administrateur CS

j'ai une autre source a mon actif qui s'appel recuperer le code html d'une page ou qqchose de ce genre ... tu l'adapte pour que le code sois ecris dans un fichier

++

signaler à un administrateur
Commentaire de capoueidiablo le 30/03/2006 00:28:56

BILA5
> Habituellement la page d'acceuil d'un site est soit index.html, index.php, index.aspx, ... enfin bref c'est index.xxx
> ensuite http://www.liberte-algerie ne fonctionne pas ... peu etre que c'est pour ca que ca marche pas, t'as essaillé avec un autre site ? google par exemple ...

signaler à un administrateur
Commentaire de bila5 le 02/04/2006 13:23:14

Merci capoueidiablo pour votre réponse, moi je m'interesse spécialement au site  http://www.liberte-algerie c'est pour ça que je ne peux pas essayer google ou autres sites et je te remercie pour l'idée que tu ma donné car j'ai pas fait attention qu'une page d'acceuil d'un site est index.xxx, alors je vais essayer et je vais voir merci encore une fois.

signaler à un administrateur
Commentaire de bila5 le 02/04/2006 13:56:23

Salamo alicom (Salut),
j'ai essayer de travailler avec index.xxx ça n'a pas marcher je suis déssus je ne sais pas quoi faire; enfin je vous remercie pour votre idée comme même et si vous avez une autre idée je serais trés enchantée de la connaitre marci.

signaler à un administrateur
Commentaire de capoueidiablo le 02/04/2006 15:14:14

Le lien de la page d'accueil est : http://www.liberte-algerie.com/index.php
voila voila :)

signaler à un administrateur
Commentaire de bila5 le 03/04/2006 12:33:44

bon merci capoueidiablo c'est vrai ce que vous m'avez dis, mais aprés moi je veux telecharger des pagesdu genre (http://www.liberte-algerie.com/rub.php?idrub=45&rubrique=Sport) si je veux telecharger la page d'une rubrique du journal; et donc j'ai trouver une solution et voila le code si quelqu'un s'interesse

import java.io.*;
import java.net.*;

public class telechargement
{
public static void main(String[] args)
{
  try
  {
   URL UrlTest = new URL("http://www.javafr.com");
   String text="";
   BufferedReader in = new BufferedReader(
                new InputStreamReader(
                              UrlTest.openStream()));
   String inputLine;
   while ((inputLine = in.readLine()) != null){
                                           text += inputLine +"\n";
                                          }  
   String FileName = UrlTest.getFile( );
   FileName = FileName.substring(FileName.lastIndexOf('/') + 1);                                              
   PrintWriter fichier = new PrintWriter(new FileWriter("C:\\"+ "\\" +FileName));
   fichier.write(text);                                        
   fichier.close( );
   in.close();
  
}
catch(Exception e){
                    System.out.println(e.getMessage());
                   }
}

}

signaler à un administrateur
Commentaire de sheorogath le 03/04/2006 18:36:59 administrateur CS

lol j'ai fait une source faisant a peu pres ce que tu fait sauf qu'elle n'ecris pas le contenu dans un fichier ( c'est l'affaire de 2 ou 3 ligne n plus)

++

signaler à un administrateur
Commentaire de kinski le 07/06/2006 16:18:27

" wow, c'est super rapide :)
par exemple ca :
  http://radioshadowfox.webzzanine.net/sounds/Sonic 3 - FlyingBattery.rbs"

On a eu exactement la meme idée ;)

Merci à sheorogath pour la source !

signaler à un administrateur
Commentaire de sheorogath le 07/06/2006 16:40:43 administrateur CS

avec plaisir^^

signaler à un administrateur
Commentaire de abhoryo le 30/06/2006 01:00:27

sheorogath, je pense qu'il y a un souci de OutOfMemory quand le fichier est trop volumineux. Une solution pour ça ?

signaler à un administrateur
Commentaire de abhoryo le 30/06/2006 01:49:42

D'après moi, il aime pas byte[] donnees = new byte[FileLenght]; quand le fichier est trop gros, le mien fait dans les 320000000 octets.
N'y aurait-il pas un moyen d'écrire bit à bit pour résoudre ce problème ?

signaler à un administrateur
Commentaire de sheorogath le 30/06/2006 10:46:40 administrateur CS

je n'ai jamais essayé

essai de faire
lire bit
tant que bit lu != -1

ecrire bit
lire bit

si j'ai le temps aujourd'hui j'essai de faire un petit code mais bon ca m'etonnerais
bonne chance

signaler à un administrateur
Commentaire de abhoryo le 30/06/2006 11:33:52

C'est bon ça marche bit a bit, en fait pour aller plus vite j'essaie de lire des bouts de 1024 bits et j'écris ceux qui ont étaient lu. J'avais poster un message hier soir mais ce matin je l'ai retrouvé effacé -_-.

Sinon j'ai fait un Applet dans lequel j'ai intégré ton code (il n'y a que ton code dedans). J'utilise jBuilder et quand je lance le projet sous jbuilder, il n'y a pas de souci, tout marche nickel.

Cependant quand je met mon .html sur mon site qui appel la classe que j'ai créer, Là ça ne marche plus. D'une j'ai le droit a un "java.security.AccesControlException : acces denied (java.io.FilePermission test.cab write)." . En fait je pense plutot qu'il essaie d'écrire sur le site plutot que sur le disque dur de celui qui navigue. Aurais-tu une solution a ce probleme ?

Merci d'avance.

signaler à un administrateur
Commentaire de sheorogath le 30/06/2006 11:48:54 administrateur CS

non il essai bien d'ecrire chez le client
une applet nas pas le droit d'ecrire sur le client
il faut qu'elle soit signe

je peux pas t'aider la dessus mes competance s'arrete au niveau des appli

les applet ne m'interresse pas

bonne chance

signaler à un administrateur
Commentaire de abhoryo le 30/06/2006 12:05:12

Pas de souci, je vais chercher des solutions.
Cependant qu'entends-tu par "qu'elle soit signe" ?

signaler à un administrateur
Commentaire de sheorogath le 30/06/2006 12:08:26 administrateur CS

qu'elle sois signé => avoir un certificat et ca demande au client si il veut executer l'applet ou pas

signaler à un administrateur
Commentaire de abhoryo le 30/06/2006 12:27:09

Oki merci bien pour tes renseignements :D

signaler à un administrateur
Commentaire de capoueidiablo le 02/10/2006 23:27:43

kinski > http://www.javafr.com/code.aspx?ID=39777 voila le résultat :) (à améliorer bien sûr)

signaler à un administrateur
Commentaire de vcherrier le 24/11/2006 16:35:58

je recherche en partit ce vous faite mais je souhaite aussi ecrit
sur un fichier qui est dans mon site internet, j'arrive à lire mais ecrire j'ai l'impression que l'on ne peut pas?
merci pour vos reponses.

signaler à un administrateur
Commentaire de sheorogath le 24/11/2006 17:42:33 administrateur CS

on ne peut evidemment pas sinon on pourrais modifier n'importe quel fichier ....

faut passer par un script genre php ou alors par le ftp ...

signaler à un administrateur
Commentaire de vcherrier le 27/11/2006 10:02:56

ok merci

signaler à un administrateur
Commentaire de areaq94 le 03/01/2007 14:58:17

Bonjour Pardonnez moi mais je ne comprends rien de ce qu'il faut faire....
j'aimerais recupéré ce fichier " trailerSplash.mov "  sur le site " www.rosariotijeraslapelicula.com " . Que dois-je faire et dans quoi je dois mettre le code cidessous.

Merci

signaler à un administrateur
Commentaire de sheorogath le 03/01/2007 16:39:50 administrateur CS

ben heu si tu connais pas le java c'est pas trop la peine
il te faut installe rle jdk
le compiler et le lancer en appelant la bonne url ...

signaler à un administrateur
Commentaire de areaq94 le 03/01/2007 16:56:12

sisi je m'y connais un peu j'apprends ça a l'ecole j, j'ai deja installé le jdk, mais comment je fais avec le code, il des trucs que je dois remplacer? ou ajouter, parceque ça c'est trop complexe pour moi encore. Merci

signaler à un administrateur
Commentaire de bloom1 le 05/01/2007 03:39:06

Et c'est normal que dans le JDK 1.6, ca fait une erreur avec un fichier de 68 Mo ?? Il me dit :
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
        at HTTPGetFile.getFile(HTTPGetFile.java:27) et cette ligne c'est elle byte[] donnees = new byte[FileLenght];
        at HTTPGetFile.<init>(HTTPGetFile.java:8) et elle c'est getFile(racine);
        at GDM.actionPerformed(Main.java:39) elle c'est quand je fais appuyer sur un bouton(c'est normal)

Alors vous pouvez m'aider ?

signaler à un administrateur
Commentaire de bloom1 le 05/01/2007 03:41:08

(P.S : le fichier fait 63 Mo)

signaler à un administrateur
Commentaire de sheorogath le 07/01/2007 13:54:17 administrateur CS

il faut que tu reprenne ce morceaux : byte[] donnees = new byte[FileLenght];
    int BitRead = 0;
    int deplacement = 0;
    while (deplacement < FileLenght) {
       BitRead = entree.read(donnees, deplacement, donnees.length-deplacement);
       if (BitRead == -1) break;
       deplacement += BitRead;
    }

en gros un tableau de 60 millions d'emplacement la jvm n'apprecie pas il faut donc lire par morceau avec des tableaux de byte mais pas de 60 mega ^^

je fini ma philo et si je le temps je refait le code

dans lepire des cas je le fait mardi

bonne soiree

signaler à un administrateur
Commentaire de bloom1 le 07/01/2007 20:03:37

Ok loll

signaler à un administrateur
Commentaire de sheorogath le 09/01/2007 19:11:16 administrateur CS

désolé je le poste vendredi ou demain aprem j'ai oubliais le code chez moi (disons que j'ai quelques problemes d'acces au net ces temps ci :$)

signaler à un administrateur
Commentaire de hassenra le 29/03/2007 14:02:39

désolée , mais je n'ai pas peux faire marché ce code.pour n'importe quel Url .il m'afiche:java.io.IOException: Fichier non valide.

signaler à un administrateur
Commentaire de sheorogath le 29/03/2007 19:02:58 administrateur CS

c'est quoi l'url

signaler à un administrateur
Commentaire de hassenra le 30/03/2007 15:11:27

voici un exemple d'url:"http://www.irit.fr/SIG_RFI/perso.html"

il m'affiche toujours le meme méssage:java.io.IOException: Fichier non valide.

s'il vous plais pouviez vous m'aider car c'est urgent.

signaler à un administrateur
Commentaire de Souliabdo le 08/04/2007 13:22:05

Bonjour,
J’ai essayé avec ce code il y a des pour lesquelles la connexion est lourde.
J’ai essayé l'url directement sur Internet il met longtemps puis le message suivant s'affiche:
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Ce que je voulais faire et quand la connexion échoue je voudrais récupérer ce message et l'afficher à partir de mon code java.
Merci beaucoup...

signaler à un administrateur
Commentaire de sheorogath le 14/04/2007 15:32:30 administrateur CS

ben dans ce cas tu va voir une autre de mes sources permettant de recuperer le contenu d'une page web ... si tu recupere un message d'erreur ou une page 'null' alors tu pourras afficher ce message

signaler à un administrateur
Commentaire de polter le 13/03/2008 14:45:04 7/10

Bonjour.

Ce code fonctionne parfaitement sauf avec ce type d'url :

http://localhost:8080/com.instranet.InstraServlet?command=com.instranet.CmdBlobGet&InstranetImage=102&SecMode=1

J'ai bien sûr mis un nom fictif au fichier.

Y a-t-il un moyen pour la faire fonctionner ? Merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

applet, création et téléchargement de fichier sur le serveur d'origine [ par darfeuille ] Bonjour, je vous explique mon probl&#232;me : j'ai d&#233;velopp&#233; une applet java (s'int&#233;grant dans un intranet)permettant d'explorer des téléchargement d'un fichier [ par onetouch ] Je veux télécharger un fichier audio existant dans une base de donnée mysql avec jsp à partir d'un url, lorsque je clique sur l'url, il va me demender bouton + menu contextuel avec swing ? [ par lex1111 ] bonjour a tous j'aimerais savoir s'il est possible de mettre avec swing un menu contextuel juste en dessous d'un bouton comme le fait firefox avec les Jar qui obtient une URL sur lui-même ? [ par loloof64 ] Bonjour à tous,le contexte :  je voudrais que le programme que je crée puisse, une fois compressé en JAR, ouvrir l'un des fichiers textes (ici .rtf ou Téléchargement HTTP [ par Amine ] Salut tout le monde,J'ai besoin d'une fonction Java simple qui fait le téléchargement HTTP d'un fichier distant.Merci d'avance. Serveur de téléchargement [ par krimou21000 ] Salut à tous..voila je suis étudient en informatique,et je suis encore débutant en java,et notre prof nous a donné comme projet de fin d'année la réal taille d'un fichier avec url [ par aurelbobol6 ] Bonjour,je recherche la taille d'un fichier sur un serveur distant. J'ai appliqué la méthode suivante qui marche pour les adresses HTTP mais pas pas p forcer téléchargement fichier struts [ par Moucave ] Bonjour à tous!J'aimerai savoir comment forcer un téléchargement en utilisant struts. En gros, j'ai un tableau affiché dans une jsp et je génère l'exp Transmettre fichier en POST à une URL [ par flolag ] Salut,J'ai une applet JAVA et je souhaiterais transmettre en HTTP POST un fichier pour ensuite le récupèrer avec une page Asp pour l'écrire sur le ser comment recuperer le contenu d'un fichier sur le net [ par byob ] Bonjour,j'ai regarder de nombreux post sur le sujet pour m'en inspirer mais je n'arrive pas à qqc de concret.Ce que j'aimerais faire : lire les 128 pr


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.