我使用的是Rails 2.3.5和Ruby 1.8.6,正在尝试弄清楚如何让用户通过我的Rails应用程序将文件上传到不同机器上的FTP服务器。另外,我的Rails应用程序将托管在Heroku上,Heroku不支持向本地文件系统写入文件。
index.html.erb
<% form_tag '/ftp/upload', :method => :post, :multipart => true do %>
<label for="file">File to Upload</label> <%= file_field_tag "file" %>
<%= submit_tag 'Upload' %>
<% end %>
ftp_controller.rb
require 'net/ftp'
class FtpController < ApplicationController
def upload
file = params[:file]
ftp = Net::FTP.new('remote-ftp-server')
ftp.login(user = "***", passwd = "***")
ftp.putbinaryfile(file.read, File.basename(file.original_filename))
ftp.quit()
end
def index
end
end
目前我只是在尝试让Rails应用程序在我的Windows笔记本电脑上运行。使用上面的代码,我得到了这个错误。
Errno::ENOENT in FtpController#upload
No such file or directory -.... followed by a dump of the file contents
我正在尝试上传一个CSV文件,如果这有任何区别的话。有人知道出了什么问题吗?
ftp.putbinaryfile(StringIO.new(file.read), file.original_filename, Net::FTP::DEFAULT_BLOCKSIZE)
能有效吗? - Tim Snowhite