FAQ ASP.NET/C#Consultez toutes les FAQ

Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 22 septembre 2007 

 
OuvrirSommaireCoté serveur et C#Transferts FTP

On pourra utiliser la méthode suivante :

 
Sélectionnez

public static FileInfo FtpDownload(Uri uri, NetworkCredential credentials, DirectoryInfo dirInfo)
{
	FileInfo fi;

	FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
	request.Credentials = credentials;
	request.UseBinary = true;
	request.Method = WebRequestMethods.Ftp.DownloadFile;
	// Utilisé pour envoyer la commande "QUIT" au serveur afin de fermer correctement la connexion
	request.KeepAlive = false;
	// Taille du tableau servant à stocker les morceaux du fichier.
	// On épargne ainsi les ressources du serveur en ne chargeant pas la totalité du fichier.
	// Cela permet de transférer rapidement des fichiers volumineux.
	byte[] buffer = new byte[2048];
	// Variable de mesure de la taille du morceau de fichier lu. Permet d'indiquer que le fichier a été lu et écrit en totalité.
	// Recupération de la réponse
	using (FtpWebResponse res = (FtpWebResponse)request.GetResponse())
	{
		fi = new FileInfo(string.Concat(dirInfo.FullName, uri.Segments[uri.Segments.Length - 1]));
		using (BinaryReader stream = new BinaryReader(res.GetResponseStream()))
		{
			using (FileStream fs = File.Create(fi.FullName, buffer.Length, FileOptions.WriteThrough))
			{
				// Ecriture du flux dans le fichier block par block
				int block;
				while ((block = stream.Read(buffer, 0, buffer.Length)) > 0)
				{
					fs.Write(buffer, 0, block);
				}
			}
		}
	}

	return fi;
}

public static void TestFtpDownload()
{
	// exemple d'utilisation
	FtpDownload(new Uri("ftp://hd1.freebox.fr/Disque dur/Enregistrements/test.txt"),
		new NetworkCredential("freebox", "000000"),
		new DirectoryInfo(@"C:\temp\"));
}
Créé le 20 septembre 2009  par Immobilis

On pourra utiliser la méthode suivante :

 
Sélectionnez

public static bool FtpUpload(Uri uri, NetworkCredential credentials, FileInfo fileInfo)
{
	FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(Path.Combine(uri.AbsoluteUri, fileInfo.Name));
	request.Method = WebRequestMethods.Ftp.UploadFile;
	request.Credentials = credentials;
	request.UseBinary = true;
	request.KeepAlive = false;
	request.UsePassive = true;

	byte[] buffer = new byte[2048];

	using (Stream stream = request.GetRequestStream())
	{
		using (FileStream fs = File.OpenRead(fileInfo.FullName))
		{
			int block;
			while ((block = fs.Read(buffer, 0, buffer.Length)) > 0)
			{
				stream.Write(buffer, 0, block);
			}
		}
	}
	return true;
}

public static void TestFtpUpload()
{
	// exemple d'utilisation
	FtpUpload(new Uri("ftp://hd1.freebox.fr/Disque dur/Enregistrements/"),
		new NetworkCredential("freebox", "000000"),
		new FileInfo(@"C:\temp\test.txt"));
}
Créé le 20 septembre 2009  par Immobilis
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.