perl模块Net::FTP使用

如何新建一个FTP对象
$ftp=Net::FTP->new($host[,%options])%options
可以对这个新建的FTP对象指定特定的选项,比如连接的超时时间等。
选项列表:
Port
Timeout
Passive 为文件传输使用被动模式
BlockSize 传输的块长度,默认为10240
如何登录指定的FTP主机
$success=$ftp->login([$username][,$pwd][,$account])
login方法可以不加任何的参数,默认以anonymous为账户名登录,它会查找.netrc 文件来作为它的认证信息。
如何设置文件传输模式
$type=$ftp->ascii 或者 binary
ascii适用于传输文本文件,这个方法返回前一个模式的值,比较的特殊。
如何得到远程FTP服务器上的当前目录
$dir=$ftp->pwd()
返回完整的工作路径
如何删除服务器上目录,如果有权限
$success=$ftp->rmdir($dir)
如何创建目录
$success=$ftp->mkdir($dir,$parents)
如果$parents为真,则会像mkdir -p这样
如何取得某目录内的文件名和目录名的短路径格式列表
@items=$ftp->ls($dir)
在标量上下文中,它返回对数组的引用。你可这样使用它$ftp->(‘-lF’)
@items=$ftp->dir() 这个和上面的ls差不多。它返回长格式形式的列表,像是ls -lg的形式。
如何从服务器上下载文件
$success=$ftp->get($remote,$local,$offset)
$remote可以为完整路径或者相对于当前目录的相对路径$local可以指定下载的文件要存储的名字,即文件重命名。可以把$local设定为一个存在的文件句柄,这样下载的文件将发送到那个句柄中。比如$ftp->get(‘filename’,\*STDOUT)。$offset是为断点续传而准备的参数,也就是它在传输前会从这个位置来传输。
如何直接检索远程文件不下载到指定的文件
$file_handle=$ftp->retr($filename)
这样我们可以读取这个文件句柄。print while<$file_handle>
如何上传文件到远程服务器上
$success=$ftp->put($local,$remote_dir)
如何初始化一个文件的传输
$file_handle=$ftp->stor($filename)
如果你能够把文件从本地上传到指定的远程目录内,这个方法返回一个文件句柄,之后我们就可以通过文件句柄来写文件到远程目录的指定文件下。还有一个功能差不多的方法:appe(),从名字上看,它是追加的意思,而sotr则直接覆盖已经存在的文件。
如何返回远程文件的修改时间,如果FTP服务器支持
$modtime=$ftp->mdtm($file)
它返回从纪元元年到现在的秒数;如果文件不存或者不是普通的文件,它返回undef。
如何得到远程服务器的文件大小
$size=$ftp->size($file)
如果文件不存在或者不是普通文件,返回undef。它以字节为单位返回指定文件的长度。
如果取得FTP服务器反馈的消息
$mesage=$ftp->message()
FTP以交互的形式工作,我们给FTP服务器发送一个指令,它进行解析并返回特定的消息,如 220 Serv-U FTP Server v6.4 for WinSock ready…,前面那个220指示命令完成的状态,大于500的表示FTP服务器内部的错误,400~499表示客户端的错误,200~299表示命令成功完成。通常来说我们没有成功登录到指定的FTP时,message()方法可以报告发生了什么错误。

其他要点
Net::FTP是libnet实用程序的一部分,这个软件包还包含其他的有用模块,比如Net::Time、Net::SMTP,具体可以参看http://search.cpan.org/~gbarr/,这是此软件包开发者的项目主页。在这里随便提下Net::Cmd模块。这个模块有两个主要的方法:command() 和response()。
$success=$obj->command($cmd,@args)
此方法将$cmd指定的命令发送给服务器,可以为命令加一些参数,它自动的在各参数之间加入空格进行分隔并将一个CRLF控制字符附加到命令的末尾。
$status=$obj->response()
它获取服务器对最后一次命令的响应,返回一个数字作为状态报告给我们,在失败的情况下返回undef。

 

posted @ 2012-12-30 16:19  agile_work  阅读(1789)  评论(0编辑  收藏  举报