it-swarm-vi.tech

Làm cách nào để tải tệp lên máy chủ SFTP bằng C # (.NET)?

Có một thư viện .NET miễn phí tồn tại mà tôi có thể tải tệp lên máy chủ SFTP (SSH FTP), điều này đưa ra các ngoại lệ đối với các sự cố với quá trình tải lên và cho phép theo dõi tiến trình của nó không?

64
Corey

Có lẽ bạn có thể script/control woncp ?

Cập nhật: woncp hiện có thư viện .NET có sẵn dưới dạng gói nuget hỗ trợ SFTP, SCP và FTPS

35
Kasprzol

Đoạn mã sau cho biết cách tải tệp lên máy chủ SFTP bằng cách sử dụng thành phần Rebex SFTP của chúng tôi.

// create client, connect and log in 
Sftp client = new Sftp();
client.Connect(hostname);
client.Login(username, password);

// upload the 'test.Zip' file to the current directory at the server 
client.PutFile(@"c:\data\test.Zip", "test.Zip");

client.Disconnect();

Bạn có thể viết nhật ký giao tiếp hoàn chỉnh vào một tệp bằng thuộc tính LogWriter như sau. Có thể tìm thấy đầu ra ví dụ (từ thành phần FTP nhưng đầu ra SFTP tương tự) tại đây .

client.LogWriter = new Rebex.FileLogWriter(
   @"c:\temp\log.txt", Rebex.LogLevel.Debug); 

hoặc chặn giao tiếp bằng các sự kiện như sau:

Sftp client = new Sftp();
client.CommandSent += new SftpCommandSentEventHandler(client_CommandSent);
client.ResponseRead += new SftpResponseReadEventHandler(client_ResponseRead);
client.Connect("sftp.example.org");

//... 
private void client_CommandSent(object sender, SftpCommandSentEventArgs e)
{
    Console.WriteLine("Command: {0}", e.Command);
}

private void client_ResponseRead(object sender, SftpResponseReadEventArgs e)
{
    Console.WriteLine("Response: {0}", e.Response);
}

Để biết thêm thông tin, hãy xem hướng dẫn hoặc tải xuống dùng thử và kiểm tra mẫ .

7
Martin Vobr

Không có giải pháp nào cho việc này trong khung .net.

http://www.eldos.com/sbb/sftpcompare.php phác thảo danh sách các tùy chọn không miễn phí.

đặt cược miễn phí tốt nhất của bạn là mở rộng SSH bằng Granados. http://www.routrek.co.jp/en/product/varaterm/granados.html

2
ddc0660

Đối với một tùy chọn không miễn phí khác, hãy thử edtFTPnet/PRO . Nó có hỗ trợ toàn diện cho SFTP và cũng hỗ trợ FTPS (và tất nhiên là FTP) nếu được yêu cầu.

0
Bruce Blackshaw

Thật không may, nó không có trong .NET Framework. Mong muốn của tôi là bạn có thể tích hợp với FileZilla, nhưng tôi không nghĩ rằng nó làm lộ ra một giao diện. Tôi nghĩ họ có kịch bản, nhưng rõ ràng nó sẽ không sạch như vậy.

Tôi đã sử dụng CuteFTP trong một dự án có SFTP. Nó hiển thị một thành phần COM mà tôi đã tạo một trình bao bọc .NET xung quanh. Cái bắt, bạn sẽ tìm thấy, là quyền. Nó chạy rất đẹp theo thông tin đăng nhập Windows đã cài đặt CuteFTP, nhưng chạy theo thông tin đăng nhập khác yêu cầu quyền được đặt trong DCOM.

0
Mike L