使用以下ftp_download
方法工作,但如果我更改
ftp.getbinaryfile(file,localdir,1024) #=> Saves the file to localdir
ftp.getbinaryfile(file) #=> returns nil
返回nil
。根据
http://www.ruby doc.org/stdlib - 2.0 -/- libdoc/net/ftp/rdoc/net/ftp.html # method-i-getbinaryfile
inilif我如上所述将localfile
设置为nil
,则该方法应检索并返回数据。我做错了什么?
def ftp_download(domain,remotedir,filename_regex,user=nil,pwd=nil)
ftp = Net::FTP::new(domain)
if user && pwd
ftp.login(user, pwd)
end
ftp.chdir(remotedir)
fileList = ftp.nlst(filename_regex)
fileList.each do |file|
localdir=File.join(remotedir,file)
localdir=localdir[1..-1] if localdir[0]="/"
FileUtils.mkdir_p(File.dirname(localdir))
ftp.getbinaryfile(file,localdir,1024)
end
ftp.close
end
如果您查看getbinaryfile
方法签名,您将注意到第二个参数(localfile
)的默认值不是nil
,而是File.basename(remotefile)
getbinaryfile(remotefile,
localfile=File.basename(remotefile),
blocksize=DEFAULT_BLOCKSIZE)
如果你想让localfile
是nil
,你必须显式地传递它:
ftp.getbinaryfile(file, nil)