Cara termudah
Cara paling sepele untuk mengunggah file ke server FTP menggunakan kerangka .NET menggunakan WebClient.UploadFile
metode :
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");
Opsi lanjutan
Jika Anda membutuhkan kontrol yang lebih besar, yang WebClient
tidak menawarkan (seperti enkripsi TLS / SSL , mode ASCII, mode aktif, dll), gunakan FtpWebRequest
. Cara mudah adalah dengan menyalin FileStream
ke aliran FTP menggunakan 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);
}
Pemantauan kemajuan
Jika Anda perlu memantau kemajuan unggahan, Anda harus menyalin sendiri kontennya secara bongkahan:
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);
}
}
Untuk kemajuan GUI (WinForms ProgressBar
), lihat contoh C # di:
Bagaimana kami dapat menampilkan bilah kemajuan untuk mengunggah dengan FtpWebRequest
Mengupload folder
Jika Anda ingin mengunggah semua file dari folder, lihat
Mengunggah direktori file ke server FTP menggunakan WebClient .
Untuk unggahan rekursif, lihat
Unggahan rekursif ke server FTP di C #