从FTP读取文件

时间:2011-08-11 06:57:35

标签: c# asp.net

如何在Visual Studio 2003中使用C#从FTP读取文件?

3 个答案:

答案 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)
        {
           //
        }