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

时间:2016-06-02 12:44:38

标签: perl sftp

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

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

4 个答案:

答案 0 :(得分:2)

使用Net::SFTP::Foreign

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

请参阅On the fly data conversion

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

因此,如果程序想要使用ASCII /文本模式,它必须知道/猜测目标系统文本文件格式,在上载之前转换文件/内容,并上传转换后的文件/内容(在&#34中) ;二进制"模式)。虽然有些SFTP客户端具有内置功能,但Perl Net :: SFTP却没有。在将文件/内容传递给Net :: SFTP之前,您是否必须自己转换文件/内容。

答案 3 :(得分:1)

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

步骤1:使用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')。

此方法将进行即时数据转换。

此致 埃杜