SPL:访问 FTP
FTP是常用的文件传输服务。JAVA虽然也提供了从FTP server读写文件的接口,但用起来不够便捷,因此,SPL进一步地提供了方便函数。
创建/关闭FTP连接
使用方式类似关系数据库的JDBC连接,SPL也用成对的“创建/关闭”方式连接FTP。
ftp_open(server:port,user,pwd),server是服务器地址,port是其服务端口,user,pwd是用户名、密码,如果没有可以省略。
ftp_close(ftpConn),ftpConn是要关闭的FTP连接。
示例:A1创建连接,中间做一些上传、下载操作后,A3关闭A1创建的连接
A |
|
1 |
=ftp_open("127.0.0.1":22) |
2 |
…… |
3 |
=ftp_close(A1) |
ftp有主动/被动两种模式,ftp_open()默认为主动模式,如需要被动模式,用选项@d指定:ftp_open@d(...)。
还有需要sftp的情况,这时要加@s选项:ftp_open@s(...)。
查看服务器文件、管理目录
ftp_dir(ftpConn,files),ftpConn是FTP连接,files是服务器上文件或目录的通配符(或具体名称),根据需要可以有任意多个。
示例:
=ftp_dir(A1,"/")
获得根目录下所有文件、目录
=ftp_dir(A1,"**.txt","**.csv")
获得所有目录下的txt、csv文件,可以用通配符**(?代表文件名的单个字符,*代表文件名的任意字符,**代表任意目录或文件)。
如果只想获得目录,用@d选项控制:
=ftp_dir@d(A1,"/")
想创建新的目录,用@m选项实现:
=ftp_dir@m(A1,"/folder3")
结果显示创建成功了:
用@r选项删除空目录:
=ftp_dir@r(A1,"/folder3")
第一次执行,会提示操作成功:
再重复执行一次删除,会提示失败,因为删除的目录不存在或目录不为空:
下载单个文件
ftp_get(ftpConn, remoteFile, localFile),把服务器文件“remoteFile”下载为本地文件“localFile”:
示例:
=ftp_get(A1,"/file8.csv","d:/file8.csv")
执行后提示下载成功:
如果本地文件已经存在,就会提示下载失败。
这时如果想强制下载,覆盖掉本地文件,加上@f选项就可以了:
=ftp_get@f(A1,"/file8.csv","d:/file8.csv")
上传单个文件
ftp_put(ftpConn, remoteFile, localFile),把本地文件“localFile”上传到服务器上,目标为“remoteFile”:
示例:
=ftp_put(A1,"/file8_new.csv","d:/file8.csv")
执行后提示上传成功:
同样,ftp_put也有@f选项,服务器上文件已经存在时,强制上传覆盖。
批量下载文件
ftp_mget(ftpConn, serverFolder, localFolder, serverFiles),从服务器上“serverFolder”下载到本地的“localFolder”,下载的文件是通配符“serverFiles”,也支持任意多个:
示例:
把服务器的/folder1下的所有xls、xlsx文件下载到本地d:/folder1下:
=ftp_mget(A1,"/folder1","d:/folder1","*.xls","*.xlsx")
把服务器的/folder1下的所有目录、文件下载到本地d:/folder1下:
=ftp_mget(A1,"/folder1","d:/folder1","**")
和ftp_get()类似,ftp_mget也用@f选项强制覆盖本地文件,除此之外,还多了@t选项,表示遇到存在文件时要跳过,只下载本地不存在的文件。
批量上传文件
ftp_mput(ftpConn, serverFolder, localFolder, localFiles),从本地“localFolder”把“localFiles”上传到服务器“serverFolder”里,同样支持多个通配符:
示例:
把本地d:/folder1下的所有xls、xlsx文件上传到服务器的/folder1下:
=ftp_mput(A1,"/folder1","d:/folder1","*.xls","*.xlsx")
把本地d:/folder1下的所有目录、文件上传到服务器的/folder1下:
=ftp_mput(A1,"/folder1","d:/folder1","**")
和ftp_put()类似,ftp_mput也用@f选项强制覆盖服务器文件,也多了@t选项,表示遇到存在文件时要跳过,只上传服务器上不存在的文件。
修改工作目录
之前示例中的服务器目录都是绝对路径,以“/”开头,如果频繁在某个目录下操作时,可以用ftp_cd()修改当前工作目录,这之后再涉及服务器目录是,不以“/”开头的,就都是相对于当前工作目录的。
ftp_cd(ftpConn, remotePath),设置remotePath为工作目录。
file7.json在/folder2下,A2先把它设置为工作目录,A3下载file7.json时,就不用指定完整的绝对路径了:
A |
|
1 |
=ftp_open("127.0.0.1":22) |
2 |
=ftp_cd(A1, "/folder2") |
3 |
=ftp_get(A1, "file7.json", "d:/file7.json") |
4 |
…… |
5 |
=ftp_close(A1) |
ftp_dir()、ftp_put()、ftp_mget()、ftp_mput()等函数中涉及服务器目录时,使用的相对路径也都是相对当前工作目录
英文版