begin process at 2010 02 10 01:52:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > TÉLÉCHARGER UN FICHIER

TÉLÉCHARGER UN FICHIER


 Information sur la source

Note :
6,33 / 10 - par 3 personnes
6,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Source .NET ( DotNet ) Classé sous :télécharger, fichier, download, thread Niveau :Initié Date de création :18/08/2004 Date de mise à jour :19/08/2004 20:42:11 Vu :13 928

Auteur : yoannd

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note


 Description

Vous trouverez ici le moyen de télécharger un fichier. Le téléchargement se fait dans un thread.

Source

  • using System;
  • using System.Net;
  • using System.Threading;
  • using System.Windows.Forms;
  • namespace DefaultNamespace{
  • /// <summary>
  • /// Description of MainForm.
  • /// </summary>
  • public class MainForm : System.Windows.Forms.Form{
  • private System.Windows.Forms.Button button;
  • public MainForm(){
  • InitializeComponent();
  • }
  • [STAThread]
  • public static void Main(string[] args){
  • Application.Run(new MainForm());
  • }
  • #region Windows Forms Designer generated code
  • /// <summary>
  • /// This method is required for Windows Forms designer support.
  • /// Do not change the method contents inside the source code editor. The Forms designer might
  • /// not be able to load this method if it was changed manually.
  • /// </summary>
  • private void InitializeComponent() {
  • this.button = new System.Windows.Forms.Button();
  • this.SuspendLayout();
  • //
  • // button
  • //
  • this.button.Location = new System.Drawing.Point(32, 96);
  • this.button.Name = "button";
  • this.button.Size = new System.Drawing.Size(200, 48);
  • this.button.TabIndex = 0;
  • this.button.Text = "Lancer le téléchargement";
  • this.button.Click += new System.EventHandler(this.ButtonClick);
  • //
  • // MainForm
  • //
  • this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
  • this.ClientSize = new System.Drawing.Size(292, 266);
  • this.Controls.Add(this.button);
  • this.Name = "MainForm";
  • this.Text = "MainForm";
  • this.ResumeLayout(false);
  • }
  • #endregion
  • void ButtonClick(object sender, System.EventArgs e){
  • // Lancement d'un thread qui se chargera du téléchargement
  • Thread th = new Thread(new ThreadStart(StartDownload));
  • th.Start();
  • }
  • public void StartDownload(){
  • try{
  • // Création d'un objet WebClient (c'est lui qui permet de télécharger un fichier)
  • WebClient wc = new WebClient();
  • // Lancement du téléchargement
  • // argument 1 : url du fichier source
  • // argument 2 : l'emplacement ou enregistrer le fichier sur le disque dur
  • wc.DownloadFile("http://perso.wanadoo.fr/puyo3d/monkey3.jpg", "c:/monkey3.jpg");
  • // Destruction de l'objet WebClient
  • wc.Dispose();
  • // Et un petit message pour dire que le téléchargement est terminé
  • MessageBox.Show("Le téléchargement est terminé", "info", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
  • }catch(Exception e){
  • MessageBox.Show("Une erreur est survenue lors du téléchargement\n" + e.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
  • }
  • }
  • }
  • }
using System;
using System.Net;
using System.Threading;
using System.Windows.Forms;

namespace DefaultNamespace{
	/// <summary>
	/// Description of MainForm.	
	/// </summary>
	public class MainForm : System.Windows.Forms.Form{
		private System.Windows.Forms.Button button;
		public MainForm(){
			InitializeComponent();
		}
		
		[STAThread]
		public static void Main(string[] args){
			Application.Run(new MainForm());
		}
		
		#region Windows Forms Designer generated code
		/// <summary>
		/// This method is required for Windows Forms designer support.
		/// Do not change the method contents inside the source code editor. The Forms designer might
		/// not be able to load this method if it was changed manually.
		/// </summary>
		private void InitializeComponent() {
			this.button = new System.Windows.Forms.Button();
			this.SuspendLayout();
			// 
			// button
			// 
			this.button.Location = new System.Drawing.Point(32, 96);
			this.button.Name = "button";
			this.button.Size = new System.Drawing.Size(200, 48);
			this.button.TabIndex = 0;
			this.button.Text = "Lancer le téléchargement";
			this.button.Click += new System.EventHandler(this.ButtonClick);
			// 
			// MainForm
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(292, 266);
			this.Controls.Add(this.button);
			this.Name = "MainForm";
			this.Text = "MainForm";
			this.ResumeLayout(false);
		}
		#endregion
		void ButtonClick(object sender, System.EventArgs e){
			// Lancement d'un thread qui se chargera du téléchargement
			Thread th = new Thread(new ThreadStart(StartDownload));
			th.Start();
		}
		public void StartDownload(){
			try{
				// Création d'un objet WebClient (c'est lui qui permet de télécharger un fichier)
				WebClient wc = new WebClient();
				
				// Lancement du téléchargement
				// argument 1 : url du fichier source
				// argument 2 : l'emplacement ou enregistrer le fichier sur le disque dur
				wc.DownloadFile("http://perso.wanadoo.fr/puyo3d/monkey3.jpg", "c:/monkey3.jpg");
				// Destruction de l'objet WebClient
				wc.Dispose();
				
				// Et un petit message pour dire que le téléchargement est terminé
				MessageBox.Show("Le téléchargement est terminé", "info", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
			}catch(Exception e){
				MessageBox.Show("Une erreur est survenue lors du téléchargement\n" + e.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
			}
		}
	}
}

 Conclusion

A la demande générale, j'ai modifié le code que celui-ci lance le téléchargement dans un thread. Maintenant, vous n'avez plus qu'à copier-coller le code ici et normallement, ben ca marche ;-)


 Historique

19 août 2004 20:42:12 :
J'ai fait cette mise à jour pour mettre le download dans un thread.

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) PIXEL SHADER - CRÉATION, UTILISATION, ET BINDING
Source avec Zip Source avec une capture Source .NET (Dotnet) CRÉATION ET ENVOI DE FICHIERS ZIPPÉS
Source avec Zip Source avec une capture Source .NET (Dotnet) LES RÉFÉRENCES FAIBLES
Source avec Zip Source .NET (Dotnet) EXTENSION DES LISTES GÉNÉRIQUES (DESIGN PATTERN "DECORATEUR"...
Source avec Zip Source avec une capture Source .NET (Dotnet) UN PEU DE 3D AVEC XAML ET BLENDER

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) HTTP FLOOD STRESS TEST par NightMareLmW
Source avec Zip Source avec une capture Source .NET (Dotnet) SERVEUR/ESCLAVE MODBUS TCP/IP par SteveFuchsIT
Source avec Zip Source avec une capture Source .NET (Dotnet) IPHELPER - PORTS TCP/UDP, TABLES DE ROUTAGE/ARP + FONCTIONS ... par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) [.NET3.5] SYSTEM.IO.PIPES - UTILISATION D'UN CANAL NOMMÉ par Willi
Source avec Zip Source .NET (Dotnet) MESSAGES PERSOS MSN par XelectroX

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) RECHERCHE ET GESTION DE FICHIERS PERSONNALISÉES par JeremyLecouvert
Source .NET (Dotnet) GREP POUR WINDOWS par Warny
Source avec Zip Source avec une capture Source .NET (Dotnet) CALCUL D'EMPREINTES DE FICHIERS par lex35
Source avec Zip Source avec une capture Source .NET (Dotnet) TRANSFER DES FICHIER + L'UTILISATION DES THREAD par crack_xp
Source avec Zip Source avec une capture Source .NET (Dotnet) SPLITTER DE FICHIERS UTILISANT LES THREADS par AryCooL

Commentaires et avis

Commentaire de jesusonline le 18/08/2004 21:03:18 administrateur CS

c'est vrai que c'est court, mais ca resume tres bien :)

Mais connaitrais tu une méthode qui permet de download un fichier avec un avancement ? (Telechargement terminé à 25%)


Cyril

Commentaire de TheSaib le 19/08/2004 00:32:45 administrateur CS

Tu peux faire de l'asynchone aussi ...

Et le Webclient est une méthode parmi tant d'autres.


C'est vrai que c'est super court quand même ...

Commentaire de stailer le 19/08/2004 10:55:39

Je dirai même : c'est très court.

T'aurais au moins pu mettre tout ça dans un thread... Histoire de montrer aux débutants ce qu'ils sont, en plus de téléchargement de fichier.

4/10

Commentaire de yoannd le 19/08/2004 17:18:02

alors...
pour répondre à Cyril : Je ne connais pas encore de méthode permettant de récupérer l'avancement du téléchargement (peut-être que l'objet WebClient possède des évènements prévus à cet effet... mais je n'en suis pas sûr du tout)

TheSib : ouais, c'est court, et c'est vraiment fait express. Je voulais juste exposer ici la méthode la plus simple qui soit.

Stailer : J'ai fait exprès de ne pas mettre ca dans un thread pour deux raisons :
- les exemples sur les threads, il y en a un paquet,
- je voulais faire quelque chose de très simple et très court, sans que tout ca soit perturbé par du code autre que la gestion des threads.

voila :-)

Commentaire de stailer le 19/08/2004 17:38:39

je comprends ton point de vue et ton code n'est pas inutile.

Seulement il est tellement court (3 lignes) qu'il me semble que l'utilisation d'un thread ici n'aurait pas gêné grand monde à la compréhension.

Surtout que le thread lui-même ne va pas demander 20 lignes de code.

Et puis bon : les débutants.... Regarde moi : je débute. Les 3 quarts de ceux qui viennent ici n'en sont pas à leur premier langage.

Et quand bien même ca le serait, es-tu certains que commencer par ce type de prog est bien raisonnable ?
Ne vaut-il pas mieux commencer par la syntaxe, les conditions, les classes et les objets , les thread ... etc ?
Car en partant de ton principe je vais faire le débutant de base : "EUh c'est koi dispose ?".

Et oui, tu ne l'as même pas expliqué dans ton commentaire.
Tu comprends mon point de vue maintenant ?

Commentaire de yoannd le 19/08/2004 20:45:44

bon ben voila, c'est dans un thread maintenant. C'est mieux là ?

Commentaire de stailer le 20/08/2004 08:47:56

Super ! merci beaucoup. En plus c'est bien expliqué.

Commentaire de yoannd le 20/08/2004 16:05:37

;-)

De rien Stailer

Commentaire de Servlax le 01/10/2004 21:13:42

Je trouve cette source très bien.

Pas besoin de compliquer pour rien en effet.

;)

Commentaire de fredza le 06/12/2004 12:07:26

Salut,

Et comment faire si derrière un proxy ? (avec authentification)

Frédéric

Commentaire de yoannd le 06/12/2004 12:45:53

Aucune idée ! lol

Commentaire de sam_sam80 le 14/05/2005 20:48:52

Salut,
Merci pour ce code qui m'a vraiment aidé.
Je l'ai essayé mais il y'a un petit problème. Lorsque le l'uri est valide mais le fichier n'existe pas il télécharge quand même un fichier bidon.
Y'a-t-il un moyen de controler ça? J'ai beau chercher j'en ai pas trouver.

Sam

Commentaire de yoannd le 18/05/2005 09:23:11

Alors là, je ne pensait pas qu'il fesait ca ! lol !

Je sais pas vraiment quoi te dire, sinon que tu peux peut-être regarder la taille du fichier téléchargé, et s'il fait 0 ko, c'est que c'est pas bon.... c'est un peu bidouille, mais bon...

Commentaire de armand19841984 le 20/03/2007 21:09:42

slt yoannd ,chez moi kan je test ton programme ca me dit cette erreur :

Le type ou le nom d'espace de noms 'Windows' n'existe pas dans la classe ou l'espace de noms 'System' (une référence d'assembly est-elle manquante ?)

tu peux mexpliquer pkoi stp?

merci

Commentaire de yoannd le 21/03/2007 03:36:13

As-tu créé un projet console ?
Si c'est le cas, c'est normal. Sois tu ajoutes la référence à cette assembly, dans les références de ton projet, sois tu recréé un projet de type "application windows".
Dis moi si tu as des problèmes pour ça.

Commentaire de Zeroc00l le 22/08/2007 03:23:50

Qu'est ce que c'est laid les accolades ouvrantes en fin de ligne :'(
Hein ? Quoi ? Hors sujet ?
Meuhhh non ... pourquoi vous achetez un nouveau téléphone portable tous les 3 mois
qui fait la même chose que votre ancien si ce n'est pour le look :p ?

Bon trève de plaisanterie... sympa la source !
Mais tant qu'à faire un truc rapide (on arrive sur le site on copie colle et hop c'est bon),
je prefererais UNE fonction toute seule. Inutile de mettre le code pour la form etc ..
genre ça commencerai par :

public bool DownloadAsync(string url, string path /*, + 1 delegate pour quand le download est terminé ?*/)
{
    Boolean res = new Boolean(true);
    System.Threading.Thread th =
        new System.Threading.Thread(new System.Threading.ThreadStart(delegate ()
    {
    try
    {
        //...

Commentaire de yoannd le 22/08/2007 09:23:15

:-)

C'est marrant les gouts et les couleurs. Par exemple moi, je préfère largement les accolades en fin de ligne, parceque je déteste perdre de la place. En effet, tu grilles une lignes à chaque fois pour un seul caractère... Bon, après, je vais pas mettre tout le code sur une seule ligne non plus, faut pas abuser ^^

Sinon, au tout départ, ce code ne comprenait que les 2 lignes strictement nécéssaires au téléchargement d'un fichier... on m'a demandé de mettre ça dans un thread, ce que j'ai fait. Si maintenant tu veux un méthode DownloadAsync, je pense que tu as suffisamment d'élément pour l'écrire (et nous la proposer ensuite ^^)

a+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

C# et les thread ??? [ par adriencollas ] Bonjour a tous,j'ai r&#233;alis&#233; un petit programme qui decode un signale DTMF a partir d'un fichier audio.le temp de calcul est ass&#233; long c Connaître la fin de lecture d'un fichier son [ par benzebuth666 ] Salut tout le monde,J'ai un problème avec la classe SoundPlayer Je voudrais lire un fichier wav et ensuite continuer le déroulement du programme. Mais Copy de Fichier [ par creanova2000 ] &nbsp;&nbsp;Bonjour je desire copier un fichier a l'aide de la fonction File.CopyLe probleme est que je veux voire la progression de la copie avec un fichier [ par Lhioui ] comment creer un fichier personalis&#233; pour sauvgarder des donn&#233;es issu de mon application mer&#231;i Problème de suppression de fichier [ par yes ] Bonjour,Je suis en train de faire&nbsp;une appli qui fonction se sert de fichier sur le reseau. Pour empech&#233; qu'une autre appli du reseau se serv FileSystemWatcher et copie de nobreux fichiers [ par seblx ] Bonjour, J'essaye de lister dans un log la cr&#233;ation de fichier dans un r&#233;pertoire donn&#233; avec la classe FileSystemWatcher.&nbsp; Tout v Comment écrire à la suite d'un fichier xml ? [ par m0rph3us002 ] Bonsoir !voil&#224; pour le moment j'arrive tr&#232;s bien &#224; rentrer des donn&#233;es dans un fichier xml grace &#224; : DataSet dataSet = new Da Thread et charge CPU [ par JuS ] Voici l'&#233;nonc&#233; de mon probl&#232;me : J'ai un programme client qui communique avec un autre programme serveur. Quand mon client se connecte Afficher un fichier XML dans un formulaire [ par titi66 ] Helloje voudrais afficher un fichier XML dans un formulaire.J'ai un bouton pour ouvrir le fichier et je voudrais l'afficher dans un partie du formulai Chemin relatif ..... [ par m0rph3us002 ] Bonsoir !voil&#224; dans mon chti programme &#224; un moment donn&#233; je fais appelle &#224; un OpenFileDialog pour ouvrir un fichier textepuis je s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales