Net::ftp getbinaryfile()保存到文件vs保存到变量



使用以下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)

如果你想让localfilenil,你必须显式地传递它:

ftp.getbinaryfile(file, nil)

相关内容

  • 没有找到相关文章

最新更新