如何通过rails 3中的ftp写入csv文件?

时间:2011-07-15 01:48:47

标签: ruby csv ftp libraries

我正在尝试通过ftp写入csv文件。以下是我到目前为止的情况:

require 'net/ftp'
require 'csv'

users = User.users.limit(5)

csv_string = CSV.generate do |csv|
  csv << ["email_addr", "first_name", "last_name"]

  users.each do |user|
    new_line = [user.email, user.first_name, user.last_name]
    csv << new_line
  end
end

csv_file = CSV.new(csv_string)

ftp = Net::FTP.new('**SERVER NAME**')
ftp.login(user = "**USERNAME**", passwd = "**PASSWORD**")
ftp.storbinary('STOR ' + 'my_file.csv', csv_file)
ftp.quit()

我收到错误“错误的参数数量(2个为3)”。当我将行更改为ftp.storbinary('STOR'+'my_file.csv',csv_file,1024)时,它表示“错误的参数数量(1表示0)”。我也试过使用storlines,但这也给了我错误。有没有人对如何处理这个问题有任何想法?

2 个答案:

答案 0 :(得分:1)

require 'net/ftp'

登录FTP服务器

ftp = Net::FTP.new('ftp.sample.com', 'test', 'pass')

OR

ftp = Net::FTP.new('ftp.sample.com')
ftp.login('test', 'pass')

切换到所需目录

ftp.chdir('source/files')

获取我们需要的文件并将其保存到'ftp_photos'目录

ftp.getbinaryfile('photos_2009-03-29.zip', 'ftp_photos/photos.zip')

我们已经完成了,所以我们需要关闭连接

ftp.close

http://travisonrails.com/2009/03/29/ruby-net-ftp-tutorial

这会对你有帮助。

答案 1 :(得分:0)

在第

ftp.storbinary('STOR ' + 'my_file.csv', csv_file)

csv_file需要是一个实际的File对象,而不是另一种对象。

&GT; (来自红宝石核心)

storbinary(cmd,file,blocksize,rest_offset = nil){| data | ......}


将连接置于二进制(图像)模式,发出给定的服务器端 命令(例如“STOR myfile”),并发送名为file的文件的内容 到服务器。如果给出了可选块,它也会将数据传递给 块大小的字符块。