Estoy en Rails 2.3.5 y Ruby 1.8.6 e intento descubrir cómo dejar que un usuario cargue un archivo en un servidor FTP en una máquina diferente a través de mi aplicación Rails. Además, mi aplicación Rails se alojará en Heroku, lo que no facilita la escritura de archivos en el sistema de archivos local.Archivos de carga de rieles en el servidor ftp
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
Actualmente estoy tratando de obtener los rieles aplicación para trabajar en mi portátil con Windows. Con el código anterior, obtengo este error
Errno::ENOENT in FtpController#upload
No such file or directory -.... followed by a dump of the file contents
Estoy tratando de cargar un archivo CSV si eso hace la diferencia. ¿Alguien sabe lo que está pasando?
¿Funciona 'ftp.putbinaryfile (StringIO.new (file.read), file.original_filename, Net :: FTP :: DEFAULT_BLOCKSIZE)'? –
No, eso no funcionó, arroja el error "no se puede convertir StringIO en cadena". – Bob
Oye, ¿Rails 3 maneja esto mejor? – fatfrog