WinSCP를 사용한 멀티파일 전송 예제(SFTP)
using System;
using WinSCP;
namespace WinSCP_MultiFile_Transfer
{
class WinSCP_Example
{
static void Main(string[] args)
{
try
{
Console.WriteLine("WinSCP test.");
// using WinSCP;
using (Session session = new Session())
{
var sessionOptions = new SessionOptions // 옵션 지정
{
Protocol = Protocol.Sftp,
HostName = "webp.flykorea.kr", // 서버 주소
PortNumber = 13022, // 포트 번호
UserName = "ftptest", // 사용자명
Password = "ftptest!@#$%^", // 암호
// SshHostKeyFingerprint = "ssh-rsa 2048 qEHmEr4r8LN ....",
GiveUpSecurityAndAcceptAnySshHostKey = true // webp.flykorea.kr 서버를 신뢰하도록 설정.
};
// 세션 연결
session.Open(sessionOptions);
// 여러 파일 업로드
var txOptions = new TransferOptions();
txOptions.TransferMode = TransferMode.Binary;
TransferOperationResult txResult;
txResult = session.PutFiles(@"C:\WinSCP_test\ftptest-?.dat", "./public_html/", false, txOptions);
// TransferOperationResult Session.PutFiles(string localPath, string remotePath, [bool remove = false], [TransferOptions options = null])
// 에러 있으면 throw
txResult.Check();
// 결과 출력
foreach (TransferEventArgs tx in txResult.Transfers)
{
Console.WriteLine($"{tx.FileName}: 업로드 성공");
}
session.Close();
}
}
catch (Exception ex)
{
Console.WriteLine("catch Exception");
Console.WriteLine(ex.Message);
}
Console.WriteLine("업로드 끝");
Console.ReadLine();
}
}
}
아래는 C#에서 FTP 서버로 파일을 전송하는 예제입니다.
이 예제는 FTP 프로토콜을 사용하여 파일을 업로드합니다. 이를 위해
System.Net
네임스페이스의FtpWebRequest
클래스를 사용합니다.이 클래스는 FTP 서버에 파일을 업로드하는 데 필요한 메서드와 속성을 제공합니다.
아래 코드는 FTP 서버에 파일을 업로드하는 방법을 보여줍니다.
public void UploadFileToFtp(string filePath, string ftpServerUrl, string ftpUserName, string ftpPassword) { try { FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServerUrl + "/" + Path.GetFileName(filePath)); request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = new NetworkCredential(ftpUserName, ftpPassword); request.UsePassive = true; request.UseBinary = true; request.KeepAlive = false; using (FileStream fileStream = File.OpenRead(filePath)) using (Stream ftpStream = request.GetRequestStream()) { byte[] buffer = new byte[10240]; int read; while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0) { ftpStream.Write(buffer, 0, read); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
위 코드에서
filePath
매개 변수는 업로드할 로컬 파일의 경로입니다.ftpServerUrl
매개 변수는 FTP 서버의 URL입니다.ftpUserName
과ftpPassword
매개 변수는 FTP 서버에 로그인하기 위한 자격 증명입니다.이 예제는
System.IO
네임스페이스의Path
클래스를 사용하여 파일 이름을 가져옵니다.이 예제는 FTP 프로토콜을 사용하여 파일을 업로드합니다. 다른 프로토콜을 사용하여 파일을 업로드하려면 다른 클래스를 사용해야 할 수 있습니다. 이 예제는 참고용으로만 사용하십시오.