FAQ ASP.NET/C#

FAQ ASP.NET/C#Consultez toutes les FAQ
Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 15 juin 2021
Sommaire→Coté serveur et C#→Transferts FTPOn 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



