如何使用 Perl 在 SFTP(版本 3)中将传输模式设置为 ASCII

How to set the transfer mode to ASCII in SFTP (version 3) using Perl

我需要在 Perl 中使用 SFTP(版本 3)传输文件。在传输文件时,我需要将传输模式设置为 ASCII。

有人可以确认一下,是否可以使用任何 Perl 模块 (Net::SFTP/Net::SFTP::Foreign/any)?

SFTP 版本 3 仅支持二进制传输:)

在 SFTP 版本 3 中,只有二进制模式。

所以如果一个程序要使用ASCII/text模式,它必须know/guess目标系统文本文件格式,在上传前转换file/contents,上传转换后的file/contents(在 "binary" 模式下)。虽然一些 SFTP 客户端具有构建它的功能,但 Perl Net::SFTP 没有。在上传到 Net::SFTP.

之前,您是否必须自己转换 file/contents

使用Net::SFTP::Foreign

$sftp->put($local_from, $remote_to, conversion => 'unix2dos');

参见On the fly data conversion

感谢大家的时间和支持!!!以下是我为给定要求申请的解决方案。

第一步:使用NET::SFTP::Foreign模块连接到服务器: $sftp_file = Net::SFTP::Foreign->new($host, $user);.

第 2 步:检查目标服务器类型(unix/windows)。

  • 如果是 Unix:不需要转换,因为我从 Unix 系统发送文件。
  • 如果Windows,做UNIX2DOS: $sftp_file->$direction("$src", "$trgt", conversion=>'unix2dos').

此方法将进行动态数据转换。