使用以下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
inilf我将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
答案 0 :(得分:11)
如果您查看getbinaryfile
方法签名,您会注意到第二个参数(localfile
)的默认值不是nil
,而是File.basename(remotefile)
getbinaryfile(remotefile,
localfile=File.basename(remotefile),
blocksize=DEFAULT_BLOCKSIZE)
如果您希望localfile
为nil
,则必须明确传递:
ftp.getbinaryfile(file, nil)