以下是使用 C# 进行 FTP 文件夹上传到服务器的示例代码。你需要将其中的变量(如服务器地址、用户名、密码、本地文件夹路径、远程服务器目录)替换为实际的值,并确保你的程序引用了 System.Net 命名空间。
using System;
using System.IO;
using System.Net;
class Program
{
static void Main(string[] args)
{
string server = "ftp://example.com"; // FTP服务器地址
string username = "your_username"; // FTP用户名
string password = "your_password"; // FTP密码
string localFolderPath = @"C:\path\to\your\folder\"; // 要上传的本地文件夹路径
string remoteDirectory = "/remote/directory/"; // 远程服务器目录
UploadFolderToFtp(server, username, password, localFolderPath, remoteDirectory);
Console.WriteLine("Folder uploaded successfully.");
}
static void UploadFolderToFtp(string serverUri, string username, string password, string localFolderPath, string remoteDirectory)
{
using (WebClient client = new WebClient())
{
client.Credentials = new NetworkCredential(username, password);
// 创建远程文件夹
FtpWebRequest createDirectoryRequest = (FtpWebRequest)WebRequest.Create(serverUri + remoteDirectory);
createDirectoryRequest.Method = WebRequestMethods.Ftp.MakeDirectory;
createDirectoryRequest.Credentials = new NetworkCredential(username, password);
try
{
FtpWebResponse response = (FtpWebResponse)createDirectoryRequest.GetResponse();
response.Close();
}
catch (WebException ex)
{
// 目录已存在或发生其他错误
Console.WriteLine("Error creating remote directory: " + ex.Message);
return;
}
// 上传文件
string[] files = Directory.GetFiles(localFolderPath);
foreach (string filePath in files)
{
string remoteFilePath = serverUri + remoteDirectory + Path.GetFileName(filePath);
client.UploadFile(remoteFilePath, "STOR", filePath);
}
// 递归上传子文件夹
string[] subDirectories = Directory.GetDirectories(localFolderPath);
foreach (string subDirectory in subDirectories)
{
string subDirectoryName = Path.GetFileName(subDirectory);
string newRemoteDirectory = remoteDirectory + subDirectoryName + "/";
UploadFolderToFtp(serverUri, username, password, subDirectory, newRemoteDirectory);
}
}
}
}
这个示例中,我们首先创建了远程文件夹,然后递归地上传文件和子文件夹。请注意,确保你的应用程序具有足够的权限来访问本地文件和文件夹,以及执行FTP上传操作。同时,对于真实的应用场景,你可能需要添加更多的错误处理和逻辑。