วิธีที่ง่ายที่สุด
วิธีที่ง่ายที่สุดในการอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ FTP โดยใช้. NET framework คือใช้WebClient.UploadFile
วิธีการ :
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");
ตัวเลือกขั้นสูง
หากคุณจำเป็นต้องมีการควบคุมมากขึ้นที่WebClient
ไม่ได้นำเสนอ (เช่นTLS / การเข้ารหัส SSLโหมด ASCII โหมดการใช้งาน ฯลฯ ), FtpWebRequest
การใช้งาน วิธีง่ายๆเพียงแค่คัดลอกFileStream
ไปยังสตรีม FTP โดยใช้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);
}
การตรวจสอบความคืบหน้า
หากคุณต้องการตรวจสอบความคืบหน้าในการอัปโหลดคุณต้องคัดลอกเนื้อหาด้วยตัวเอง:
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 (WinForms ProgressBar
) โปรดดูตัวอย่าง C # ที่:
เราจะแสดงแถบความคืบหน้าสำหรับการอัปโหลดด้วย FtpWebRequest ได้อย่างไร
กำลังอัปโหลดโฟลเดอร์
หากคุณต้องการอัปโหลดไฟล์ทั้งหมดจากโฟลเดอร์ดู
ไดเรกทอรีอัพโหลดไฟล์ไปยังเซิร์ฟเวอร์ FTP ใช้ WebClient
สำหรับการอัปโหลดแบบเรียกซ้ำโปรดดูที่การ
อัปโหลดแบบเรียกซ้ำไปยังเซิร์ฟเวอร์ FTP ใน C #