ai.sftp
本文說明 ai.sftp 名稱空間和相關聯的方法,以使用檔案讀取器和寫入器物件來建立用戶端、執行基本用戶端作業、上傳和下載檔案。
ai.sftp 名稱空間可讓使用者將檔案上傳及下載至 SFTP 伺服器。它還允許上傳和下載加密的檔案,讓您使用 PGP 加密和解密這些檔案。
建立用戶端
- ai.sftp.createClient
- 您可以使用 createClient() 方法建立 SFTP 實例,並起始與 SFTP 伺服器的所有作業。此函數會將針對指令碼配置的 SFTP 連線字串名稱做為參數,並傳回用戶端實例物件。方法參數傳回類型說明createClient(sftpConnection)sftpConnection : 字串您的 SFTP 連線名稱物件建立 SFTP 用戶端
- 用途
- const client = ai.sftp.createClient('mySftpConnectionSetting');
用戶端基本作業
您可以對 ai.createClient 方法傳回的用戶端實例物件執行下列操作。
方法 | 參數 | 傳回類型 | 說明 |
|---|---|---|---|
isConnected() | Boolean | 如果 SFTP 用戶端已連線,則傳回 True;否則為 False。 | |
disconnect() | 登出並關閉與伺服器的用戶端階段作業。在用戶端上呼叫的任何進一步作業都會導致拋出例外。 | ||
delete(fileName) | fileName : String 要刪除的檔案名稱 | 刪除指定的檔案 | |
rename (renameFrom, renameTo) | renameFrom ︰字串 檔案的原始名稱 renameTo ︰字串 檔案的新名稱 | 重新命名指定的檔案 | |
createDirectory(directoryName) | 名稱︰字串 新目錄的相對路徑 | 在伺服器上建立目錄。 | |
ChangeDirectory(newLocation) | newLocation : 字串 伺服器上新位置的相對路徑 | String | 變更伺服器上目前的工作目錄。此作業會傳回目前的工作目錄 |
getCurrentDirectory() | String | 取得目前的工作目錄 | |
getFileSizeBytes(fileName) | fileName : String 檔案名稱,對應擷取的檔案大小 | 數字 | 傳回指定檔案的大小 (以字節為單位) |
listCurrentDirectory() | 收藏 | 傳回目前工作目錄中所有檔案和目錄的清單。 |
下載檔案
使用下列用戶端方法從伺服器下載檔案。
downloadFile(fileName) | 檔案名稱︰字串 要下載的檔案名稱 | 物件 | 下載檔案並傳回讀取器,以逐行通讀檔案。 |
downloadEncryptedFile(fileName, encryptionSettingName) | fileName : 字串 要下載的檔案的相對路徑 加密設定名稱 : 字串 在「設計整合」的 「憑證」 區域中,您的加密設定名稱 | 物件 | 下載檔案,使用指定的加密設定將其解密,並傳回讀取器以逐行通讀檔案。 |
downloadAndVerifyEncryptedFile(fileName, encryptionSettingName) | fileName : 字串 要下載的檔案的相對路徑 加密設定名稱 : 字串 在「設計整合」的 「憑證」 區域中,您的加密設定名稱 | 物件 | 下載檔案,使用指定的加密設定進行驗證和解密,並傳回逐行通讀檔案的讀取器 |
- 檔案讀取器方法
- 您可以在downloadFiles() 方法傳回的讀取器物件上調用這些方法。readLine()String逐行讀取檔案cleanUp()釋出檔案 Reader 物件所取用的系統資源。執行 cleanup() 方法後無法使用 FileReader。資源會在指令碼結束時自動清除。
- 範例
- //Pass the relative filepath and the name of your encryption setting const reader = client.downloadEncryptedFile('./archive/datasample.csv.asc', 'mypgp'); let line = reader.readLine() while(line !== null){ //Process the line line = reader.readLine() }
上傳檔案
若要上傳檔案,必須建立可寫入行的寫入器。編寫器物件是從 ai.sftp 名稱空間取得。檔案建立後,即可使用下列其中一種方法上傳至用戶端。
uploadFile(writer, uploadedFileName) | 編寫器 : 編寫器 從 ai.sftp.createFileWriter() 方法取得 上傳的檔案名稱︰字串 您要上傳的檔案名稱 | 將指定的檔案上傳至伺服器。 | |
uploadEncryptedFile (writer,uploadedFileName,encryptionSettingName) | 編寫器 : 編寫器 從 ai.sftp.createFileWriter() 方法取得 上傳的檔案名稱︰字串 您要上傳的檔案名稱 加密設定名稱 : 字串 加密設定的名稱 | 使用指定的加密設定 (位於設計整合的 「憑證」 區域中) 加密檔案,並將檔案上傳至伺服器。檔案名稱和位置由上傳的檔案名稱引數指定。 | |
uploadEncryptedAndSignedFile(writer, uploadedFileName, encryptionSettingName) | 編寫器 : 編寫器 從 ai.sftp.createFileWriter() 方法取得 上傳的檔案名稱︰字串 您要上傳的檔案名稱 加密設定名稱 : 字串 加密設定的名稱 | 使用指定的加密設定 (位於設計整合的 「憑證」 區域中) 加密檔案並簽署檔案,並將其上傳至伺服器。檔案名稱和位置由上傳的檔案名稱引數指定。 |
- 檔案編寫器方法
- 您可以對下載檔案傳回的讀取器物件調用下列方法。writeLine(val)val : 字串要寫入檔案的內容將內容逐行寫入檔案。cleanUp()釋放檔案編寫器物件所使用的系統資源。執行 cleanup() 方法後無法使用 Writer。資源會在指令碼結束時自動清除。
- 範例
- const client = ai.sftp.createClient('mySftpConnectionSetting'); //Invoke the File Writer method const writer = ai.sftp.createFileWriter(); //Write content to the writer variable writer.writeLine('Here is a line to upload'); client.uploadFile(writer, 'myFileToShare.txt'); writer.cleanUp();
AWS Transfer for SFTP 的注意事項
透過 SFTP 連線至 AWS S3 伺服器時,與 Open SSH 伺服器相比,使用 AWS S3 檔案組織的行為會有所不同。
- 建立目錄
- AWS S3 可讓您指定新目錄的路徑。例如, client.createDirectory('./parent/child');將建立父系目錄。但是,如果父系目錄已經存在,而您嘗試建立子系目錄,則會引發例外。