ai.sftp
本文介绍了 ai.sftp 命名空间以及相关的方法,用于创建客户端、执行基本客户端操作,以及使用文件 Reader 和 Writer 对象上传和下载文件。
通过 ai.sftp 命名空间,用户可以将文件上传到 SFTP 服务器,或将文件下载到 SFTP 服务器。它还允许上传和下载加密文件,以便您使用 PGP 对其进行加密和解密。
创建客户端
- ai.sftp.createClient
- 您可以使用 createClient() 方法创建 SFTP 实例,并通过 SFTP 服务器发起所有操作。此函数采用为脚本配置的 SFTP 连接字符串的名称作为参数,并返回客户端实例对象。方法参数返回类型描述createClient(sftpConnection)sftpConnection:String您的 SFTP 连接名称对象创建 SFTP 客户端
- 使用情况
- const client = ai.sftp.createClient('mySftpConnectionSetting');
客户端基本操作
您可以对从 ai.createClient 方法返回的客户端实例对象执行以下操作。
方法 | 参数 | 返回类型 | 描述 |
|---|---|---|---|
isConnected() | Boolean | 如果已连接 SFTP 客户端,则返回 True;反之,则返回 True。否则为“假”。 | |
disconnect() | 注销并关闭客户端与服务器的会话。在客户端上调用的任何其他操作都将导致引发异常。 | ||
delete(fileName) | fileName : 要删除的文件的 String 名称 | 删除指定的文件 | |
rename (renameFrom, renameTo) | renameFrom:String 文件的原始名称 renameTo :String 文件的新名称 | 重命名指定的文件 | |
createDirectory(directoryName) | 名称:字符串 新目录的相对路径 | 在服务器上创建目录。 | |
changeDirectory(newLocation) | newLocation : String 新位置在服务器上的相对路径 | String | 更改服务器上的当前工作目录。此操作将返回当前工作目录 |
getCurrentDirectory() | String | 获取当前工作目录 | |
getFileSizeBytes(fileName) | fileName : String 所提取文件大小的文件名 | 数字 | 返回指定文件的大小(以字节为单位)。 |
listCurrentDirectory() | 收款 | 返回当前工作目录中所有文件和目录的列表。 |
下载文件
使用以下客户端方法从服务器下载文件。
downloadFile(fileName) | fileName:字符串 要下载的文件的名称 | 对象 | 下载文件并返回读取器以逐行通读文件。 |
downloadEncryptedFile(fileName, encryptionSettingName) | fileName : String 要下载的文件的相对路径 EncryptionSettingName:String “设计集成”中 “凭据” 区域中的加密设置的名称。 | 对象 | 下载文件,使用指定的加密设置对其进行解密,然后返回一个读取器以逐行通读该文件。 |
downloadAndVerifyEncryptedFile(fileName, encryptionSettingName) | fileName : String 要下载的文件的相对路径 EncryptionSettingName:String “设计集成”中 “凭据” 区域中的加密设置的名称。 | 对象 | 下载文件,使用指定的加密设置验证文件和解密文件,然后返回一个读取器,以便逐行通读文件。 |
- 文件读取器方法
- 您可以对从 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() 方法获取 UploadedFileName:String 正在上传的文件的名称 | 将指定的文件上传到服务器。 | |
UploadEncryptedFile (Writer, UploadedFileName, EncryptionSettingName) | 编写器:编写器 从 ai.sftp.createFileWriter() 方法获取 UploadedFileName:String 正在上传的文件的名称 EncryptionSettingName:String 加密设置的名称 | 使用指定的加密设置(可在“设计集成”的 “凭据” 区域中找到)对文件进行加密,并将其上传到服务器。文件名和位置由 UploadedFileName 参数指定。 | |
uploadEncryptedAndSignedFile(writer, uploadedFileName, encryptionSettingName) | 编写器:编写器 从 ai.sftp.createFileWriter() 方法获取 UploadedFileName:String 正在上传的文件的名称 EncryptionSettingName:String 加密设置的名称 | 使用指定的加密设置(可在“设计集成”的 “凭据” 区域中找到)对文件进行加密和签名,然后将其上传到服务器。文件名和位置由 UploadedFileName 参数指定。 |
- 文件编写器方法
- 您可以对下载文件后返回的 Reader 对象调用以下方法。WriteLine(val)val:String要写入文件的内容将内容逐行写入文件。cleanUp()释放“文件编写器”对象消耗的系统资源。运行 Cleanup() 方法后无法使用编写器。系统会在脚本结束时自动清除资源。
- 示例
- 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 文件组织在行为上存在一些差异。
- CreateDirectory
- AWS S3 允许您指定新目录的路径。例如,client.createDirectory('./parent/sub');将创建父级目录。但是,如果父目录已存在,而您尝试创建子目录,则会引发异常。