Il modo più semplice
Il modo più semplice per caricare un file su un server FTP utilizzando .NET framework è utilizzare il WebClient.UploadFile
metodo :
WebClient client = new WebClient();
client.Credentials = new NetworkCredential("username", "password");
client.UploadFile("ftp://ftp.example.com/remote/path/file.zip", @"C:\local\path\file.zip");
Opzioni avanzate
Se hai bisogno di un controllo maggiore, che WebClient
non offre (come crittografia TLS / SSL , modalità ASCII, modalità attiva, ecc.), Usa FtpWebRequest
. Il modo semplice è copiare semplicemente un FileStream
in un flusso FTP utilizzando Stream.CopyTo
:
FtpWebRequest request =
(FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/remote/path/file.zip");
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.UploadFile;
using (Stream fileStream = File.OpenRead(@"C:\local\path\file.zip"))
using (Stream ftpStream = request.GetRequestStream())
{
fileStream.CopyTo(ftpStream);
}
Monitoraggio dei progressi
Se è necessario monitorare l'avanzamento di un caricamento, è necessario copiare i contenuti in blocchi da soli:
FtpWebRequest request =
(FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/remote/path/file.zip");
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.UploadFile;
using (Stream fileStream = File.OpenRead(@"C:\local\path\file.zip"))
using (Stream ftpStream = request.GetRequestStream())
{
byte[] buffer = new byte[10240];
int read;
while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
ftpStream.Write(buffer, 0, read);
Console.WriteLine("Uploaded {0} bytes", fileStream.Position);
}
}
Per lo stato di avanzamento della GUI (WinForms ProgressBar
), vedere l'esempio C # su:
Come possiamo mostrare la barra di avanzamento per il caricamento con FtpWebRequest
Caricamento cartella
Se si desidera caricare tutti i file da una cartella, vedere
Caricamento della directory dei file sul server FTP utilizzando WebClient .
Per un caricamento ricorsivo, vedere
Caricamento ricorsivo sul server FTP in C #