前言、
工作專案需要,須使用 SFTP 上傳檔案到指定路徑,與下載指定檔案回來分析。 因為自已阿呆,傻傻以為 SFTP 是一種 FTP,直接採用 .Net Framework 原生的 FTP 功能來實作 SFTP 上傳下載。不斷撞牆之後,這才發現,實在天真的可以。這兩種根本就是不一樣的 protocol 啊。 欲知詳情,請跳轉 Understanding Key Differences Between FTP, FTPS and SFTP。內容、
花了點時間用功,SharpSSH 已經相當穩定,也可以很簡單使用(根本無腦)。1、引用參考 把下載回來的 sharpssh package 解開後,會發現 3 個 .dll 檔,因為目前只使用上傳下載簡易的功能,需要把 Tamir.SharpSSH、DiffieHellman 這兩個組件加入參考。
2、程式 我們要手刻的程式碼也相當簡單,首先引用 Tamir.SharpSSH 這個命名空間,實作的程式碼如下圖。
簡單說明,
上傳 Put:fromFilePath 指的是本機端的完整檔案名稱。toFilePath則為遠端 SFTP 的完整檔名,若不指定路徑則會上傳至登入帳號的預設路徑。
下載 Get:fromFilePath 表示遠端檔案的完整名稱,若不指定路徑則為登入帳號的預設路徑。toFilePath 則代表本機端的完整檔名。
如果我們需要用到 remote 功能呢?如變更 SFTP 上的檔名、或是刪檔等功能,當然也能實作。不過程式將會變得稍微複雜一點,此時會使用到 ssh channel。或者也可以參考這個教學影片。
SFTP Download, Upload and Delete File using SharpSSH library
https://www.youtube.com/watch?v=VVqh0BCgFpM
2 留言
Takol
居然被 takol 哥記住了,害羞ing... 哈哈。
plurk 真的會影響寫 blog 的興緻,可是我玩得挺開心,我也發現 takol 就突然消失在河道上了:p 即便如此,有時我仍會撥空到 takol 的地方,看看又帶劉大毛去哪裡玩了。科科~
anyway,it's glad to see the information here ^^