Cách dễ nhất
Cách đơn giản nhất để tải tệp lên máy chủ FTP bằng .NET framework là sử dụng WebClient.UploadFile
phương pháp :
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");
Tùy chọn nâng cao
Nếu bạn cần một quyền kiểm soát lớn hơn, điều WebClient
đó không cung cấp (như mã hóa TLS / SSL , chế độ ASCII, chế độ hoạt động, v.v.), hãy sử dụng FtpWebRequest
. Cách dễ dàng là chỉ cần sao chép một FileStream
luồng FTP bằng cách sử dụng 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);
}
Giám sát tiến độ
Nếu bạn cần theo dõi tiến trình tải lên, bạn phải tự sao chép nội dung theo từng đoạn:
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);
}
}
Đối với tiến trình GUI (WinForms ProgressBar
), hãy xem ví dụ C # tại:
Làm cách nào chúng tôi có thể hiển thị thanh tiến trình để tải lên với FtpWebRequest
Đang tải lên thư mục
Nếu bạn muốn tải lên tất cả các tệp từ một thư mục, hãy xem
Tải thư mục tệp lên máy chủ FTP bằng cách sử dụng WebClient .
Để tải lên đệ quy, hãy xem
Tải lên đệ quy lên máy chủ FTP trong C #