En kolay yol
.NET çerçevesini kullanarak bir FTP sunucusuna dosya yüklemenin en önemsiz yolu şu WebClient.UploadFile
yöntemi kullanmaktır :
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");
Gelişmiş seçenekler
Daha büyük bir kontrole ihtiyacınız varsa WebClient
( TLS / SSL şifreleme , ASCII modu, aktif mod vb FtpWebRequest
. Gibi), kullanın . Kolay yol, aşağıdakileri FileStream
kullanarak bir FTP akışına kopyalamaktır 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);
}
İlerleme izleme
Bir yükleme ilerlemesini izlemeniz gerekiyorsa, içeriği parçalara göre kopyalamanız gerekir:
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);
}
}
GUI ilerlemesi (WinForms ProgressBar
) için, C # örneğine bakın:
FtpWebRequest ile karşıya yükleme için ilerleme çubuğunu nasıl gösterebiliriz
Klasör yükleniyor
Bir klasördeki tüm dosyaları yüklemek istiyorsanız,
WebClient kullanarak dosyaların dizinini FTP sunucusuna yükleme konusuna bakın .
Özyinelemeli yükleme için, bkz
. C # 'da FTP sunucusuna yinelemeli yükleme