新增FluentFTP 下载文件

master
xiaochanghai 1 year ago
parent d1ff20bb59
commit bf07192350
  1. 83
      Tiobon.Core.PublishHelper/Src/SftpHelper.cs

@ -1,6 +1,7 @@
using System.Net;
using System.Text;
using FluentFTP;
using File = System.IO.File;
using Renci.SshNet;
using Renci.SshNet.Sftp;
@ -26,39 +27,71 @@ namespace Tiobon.PublishHelper
try
{
if (!Utility.Ping(server.Ip, b_log))
{
return b_suc;
}
using (SftpClient sftp = new SftpClient(server.Ip, server.Port, "root", server.SuPassword))
using (var ftp = new FtpClient(server.Ip, server.UserName, server.SuPassword, server.Port))
{
sftp.Connect();
if (sftp.Exists(remoteFile))
ftp.Connect();
if (b_log)
Utility.SendLog("下载", $"下载文件 {remoteFile}");
if (File.Exists(localFile))
{
if (b_log)
Utility.SendLog("下载", $"下载文件 {remoteFile}");
if (File.Exists(localFile))
{
File.Delete(localFile);
System.Threading.Thread.Sleep(50);
}
var sftFile = sftp.ListDirectory(remoteFile.Substring(0, remoteFile.LastIndexOf('/'))).Where(o => o.FullName == remoteFile).FirstOrDefault();
using (var file = File.OpenWrite(localFile))
File.Delete(localFile);
Thread.Sleep(50);
}
var size = ftp.GetFileSize(remoteFile);
// define the progress tracking callback
Action<FtpProgress> progress1 = delegate (FtpProgress p)
{
if (p.Progress == 1)
{
sftp.DownloadFile(remoteFile, file, pro =>
{
progress?.Invoke(sftFile.Length, pro);
});
if (b_log)
Utility.SendLog("下载", $"成功 {remoteFile} =>> {localFile} len {file.Length} byte");
Utility.SendLog("下载", $"成功 {remoteFile} =>> {localFile} len {size} byte");
b_suc = true;
}
}
else
{
if (b_log)
Utility.SendLog("下载", $"文件不存在 {remoteFile}");
}
else
//progress?.Invoke(sftFile.Length, pro);
{
// percent done = (p.Progress * 100)
progress?.Invoke(size, (ulong)p.Progress);
}
};
// download a file with progress tracking
ftp.DownloadFile(localFile, remoteFile, FtpLocalExists.Overwrite, FtpVerify.None, progress1);
}
//using (SftpClient sftp = new SftpClient(server.Ip, server.Port, "root", server.SuPassword))
//{
// sftp.Connect();
// if (sftp.Exists(remoteFile))
// {
// if (b_log)
// Utility.SendLog("下载", $"下载文件 {remoteFile}");
// if (File.Exists(localFile))
// {
// File.Delete(localFile);
// System.Threading.Thread.Sleep(50);
// }
// var sftFile = sftp.ListDirectory(remoteFile.Substring(0, remoteFile.LastIndexOf('/'))).Where(o => o.FullName == remoteFile).FirstOrDefault();
// using (var file = File.OpenWrite(localFile))
// {
// sftp.DownloadFile(remoteFile, file, pro =>
// {
// progress?.Invoke(sftFile.Length, pro);
// });
// if (b_log)
// Utility.SendLog("下载", $"成功 {remoteFile} =>> {localFile} len {file.Length} byte");
// b_suc = true;
// }
// }
// else
// {
// if (b_log)
// Utility.SendLog("下载", $"文件不存在 {remoteFile}");
// }
//}
}
catch (Exception ex)
{

Loading…
Cancel
Save