在C#中使用FluentFTP庫處理文件校驗,可以通過檢查文件的MD5哈希值來實現。以下是一個示例代碼,展示了如何使用FluentFTP下載文件并驗證其MD5哈希值:
using System;
using System.IO;
using System.Security.Cryptography;
using FluentFTP;
class Program
{
static void Main(string[] args)
{
string host = "ftp.example.com";
int port = 21;
string username = "username";
string password = "password";
string remoteFilePath = "/path/to/remote/file.txt";
string localFilePath = "C:/path/to/local/file.txt";
// 創建FtpClient對象
using (FtpClient client = new FtpClient(host, port, username, password))
{
// 連接到FTP服務器
client.Connect();
// 檢查連接是否成功
if (!client.IsConnected)
{
Console.WriteLine("Failed to connect to FTP server.");
return;
}
// 獲取遠程文件的MD5哈希值
string remoteFileHash = client.Getmd5(remoteFilePath);
// 計算本地文件的MD5哈希值
string localFileHash = CalculateFileHash(localFilePath);
// 比較兩個哈希值以驗證文件完整性
if (remoteFileHash == localFileHash)
{
Console.WriteLine("File is valid.");
}
else
{
Console.WriteLine("File is corrupted.");
}
// 斷開與FTP服務器的連接
client.Disconnect();
}
}
static string CalculateFileHash(string filePath)
{
using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
using (MD5 md5 = MD5.Create())
{
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
md5.TransformFinalBlock(buffer, 0, bytesRead);
}
StringBuilder sb = new StringBuilder();
foreach (byte b in md5.Hash)
{
sb.Append(b.ToString("x2"));
}
return sb.ToString();
}
}
}
}
在這個示例中,我們首先連接到FTP服務器并獲取遠程文件的MD5哈希值。然后,我們計算本地文件的MD5哈希值并將其與遠程文件的哈希值進行比較。如果兩個哈希值相同,則文件是有效的;否則,文件已損壞。