如何在Visual Studio 2003中使用C#从FTP读取文件?
答案 0 :(得分:1)
你可以这个免费的图书馆: http://ftplib.codeplex.com/
答案 1 :(得分:0)
Visual Studio 2003太旧了!您可以在.Net 2.0中使用HTtpWebRequest类
答案 2 :(得分:0)
尝试以下代码从FTP获取文件,如果要从FTP提取文件,则需要输入密钥。
try
{
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = hostName,
UserName = userName,
Password = password,
};
if (protocal.ToLower() == "ftp")
{
sessionOptions.Protocol = Protocol.Ftp;
sessionOptions.FtpSecure = FtpSecure.Implicit;
sessionOptions.TlsHostCertificateFingerprint = ftpHostKeyFingerprint;// ;
//we cannot set GiveUpSecurityAndAcceptAnySshHostKey=true in case of FTP and WEBDAV, Its mandatory to pass SshHostKeyFingerprint Key value.
}
else if (protocal.ToLower() == "sftp")
{
sessionOptions.Protocol = Protocol.Sftp;
//we can set GiveUpSecurityAndAcceptAnySshHostKey=true in case of SFTP and SCP, Its not mandatory to pass SshHostKeyFingerprint Key value.
if (string.IsNullOrEmpty(ftpHostKeyFingerprint))
{
sessionOptions.GiveUpSecurityAndAcceptAnySshHostKey = true;
}
else
{
sessionOptions.SshHostKeyFingerprint = ftpHostKeyFingerprint;
}
}
else if (protocal.ToLower() == "scp")
{
sessionOptions.Protocol = Protocol.Scp;
if (string.IsNullOrEmpty(ftpHostKeyFingerprint))
{
sessionOptions.GiveUpSecurityAndAcceptAnySshHostKey = true;
}
else
{
sessionOptions.SshHostKeyFingerprint = ftpHostKeyFingerprint;
}
}
if (string.IsNullOrWhiteSpace(searchPattern))
{
searchPattern = "";
}
using (Session session = new Session())
{
session.Open(sessionOptions);
// Download files
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
transferResult = session.GetFiles(SFTPSourcePath + searchPattern, LocalDestinationPath, false, transferOptions);
transferResult.Check(); // Throw on any error
_prTasksPRPayStubLogger.Info($"Files fetched from FTP - { transferResult.Transfers.Count}");
var archivePath = Path.Combine(SFTPSourcePath, "Archive");
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
//Move Files
var destinationFileName = archivePath + "/Archive_" + DateTime.Now.ToString("yyyyMMddHHmmss") + Path.GetFileName(transfer.FileName);
session.MoveFile(transfer.FileName, destinationFileName);
}
}
}
catch (Exception e)
{
//
}