以下是详细讲解“C# FTP上传文件实例代码(简易版)”的完整攻略:
什么是FTP?
FTP(File Transfer Protocol)是一种用于在网络上传输文件的标准协议。在 C# 中,我们可以使用 FtpWebRequest
类和 FtpWebResponse
类来实现 FTP 文件上传。
步骤1:创建FTP连接
在上传文件之前,我们需要先创建一个 FTP 连接。以下是创建 FTP 连接的示例:
string ftpServer = "ftp://ftp.example.com/";
string ftpUsername = "username";
string ftpPassword = "password";
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpServer);
ftpRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
在上面的示例中,我们首先指定 FTP 服务器的地址、用户名和密码。然后,我们使用 FtpWebRequest
类创建一个 FTP 请求对象,并设置请求的方法为上传文件。
步骤2:上传文件
在创建 FTP 连接之后,我们可以使用 FtpWebRequest
类的 GetRequestStream()
方法获取一个用于上传文件的流。以下是上传文件的示例:
string localFilePath = @"C:\example.txt";
string remoteFilePath = "/example.txt";
using (Stream ftpStream = ftpRequest.GetRequestStream())
using (FileStream localFileStream = new FileStream(localFilePath, FileMode.Open))
{
byte[] buffer = new byte[10240];
int read;
while ((read = localFileStream.Read(buffer, 0, buffer.Length)) > 0)
{
ftpStream.Write(buffer, 0, read);
}
}
在上面的示例中,我们首先指定本地文件的路径和远程文件的路径。然后,我们使用 FtpWebRequest
类的 GetRequestStream()
方法获取一个用于上传文件的流,并使用 FileStream
类打开本地文件的流。接下来,我们使用一个循环将本地文件的内容写入 FTP 流中。
示例1:上传单个文件
以下是上传单个文件的示例:
string ftpServer = "ftp://ftp.example.com/";
string ftpUsername = "username";
string ftpPassword = "password";
string localFilePath = @"C:\example.txt";
string remoteFilePath = "/example.txt";
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpServer + remoteFilePath);
ftpRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
using (Stream ftpStream = ftpRequest.GetRequestStream())
using (FileStream localFileStream = new FileStream(localFilePath, FileMode.Open))
{
byte[] buffer = new byte[10240];
int read;
while ((read = localFileStream.Read(buffer, 0, buffer.Length)) > 0)
{
ftpStream.Write(buffer, 0, read);
}
}
在上面的示例中,我们上传了一个名为 example.txt
的文件。我们首先指定 FTP 服务器的地址、用户名和密码,然后指定本地文件的路径和远程文件的路径。接下来,我们使用 FtpWebRequest
类的 Create()
方法创建一个 FTP 请求对象,并设置请求的方法为上传文件。最后,我们使用一个循环将本地文件的内容写入 FTP 流中。
示例2:上传多个文件
以下是上传多个文件的示例:
string ftpServer = "ftp://ftp.example.com/";
string ftpUsername = "username";
string ftpPassword = "password";
string[] localFilePaths = { @"C:\example1.txt", @"C:\example2.txt", @"C:\example3.txt" };
string remoteDirectoryPath = "/";
foreach (string localFilePath in localFilePaths)
{
string remoteFilePath = remoteDirectoryPath + Path.GetFileName(localFilePath);
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpServer + remoteFilePath);
ftpRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
using (Stream ftpStream = ftpRequest.GetRequestStream())
using (FileStream localFileStream = new FileStream(localFilePath, FileMode.Open))
{
byte[] buffer = new byte[10240];
int read;
while ((read = localFileStream.Read(buffer, 0, buffer.Length)) > 0)
{
ftpStream.Write(buffer, 0, read);
}
}
}
在上面的示例中,我们上传了三个文件。我们首先指定 FTP 服务器的地址、用户名和密码,然后指定本地文件的路径数组和远程目的路径。接下来,我们使用一个循环遍历本地文件的路径数组,并为每个文件创建一个 FTP 请求对象。最后,我们使用一个循环将本地文件的内容写入 FTP 流中。
结论
在本文中,我们详细介绍了如何使用 C# 实现 FTP 文件上传。我们介绍了创建 FTP 连接、上传文件的基本步骤,并提供了两个示例来演示如何上传单个文件和多个文件。通过本文的学习,我们可以更加熟练地使用 C# 实现 FTP 文件上传,提高代码的质量和可靠性。