Télécharger un fichier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 25 801 fois - Téléchargée 34 fois

Contenu du snippet

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

Source / Exemple :


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 ;-)

A voir également

Ajouter un commentaire Commentaires
Messages postés
305
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 août 2011
6
:-)

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+
Messages postés
367
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010

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
{
//...
Messages postés
305
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 août 2011
6
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.
Messages postés
3
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
31 mai 2008

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
Messages postés
305
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 août 2011
6
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...
Afficher les 17 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.