Загрузка файлов по FTP из Rails

$ rails g controller Ftp upload
../app/controllers/ftp_controller.rb
require 'net/ftp'
class FtpController < ApplicationController
  def upload
    ftp = Net::FTP.new('сервер')
    ftp.passive = true
    ftp.login(user = "пользователь", passwd="пароль")
    ftp.putbinaryfile("путь к файлу", File.basename("название файла"))
    ftp.quit()
  end
end
Все просто. Устанавливаем соединение с ftp-сервером и передаем путь к файлу. Но если нам неизвестен путь к файлу? Тогда все становится несколько сложнее. Для примера - добавим форму, где пользователь может выбрать файл для загрузки...
../app/views/ftp/_ftp.html.erb
<% form_tag '/upload', :method => :post, :multipart => true do %>
<label>Выберите файл</label><%= file_field 'upload', 'filedata' %>
<%= submit_tag "Поехали!" %>
<% end %>
Редактируем контроллер -
def upload
  file = params[:upload]
  original_filename = file['filedata'].original_filename
  File.open("public/data/#{original_filename}", 'w') { | f | f.write(file['filedata'].read) }  
  ftp = Net::FTP.new('сервер')
  ftp.passive = true
  ftp.login(user = "пользователь", passwd="пароль")
  ftp.putbinaryfile("public/data/#{original_filename}", File.basename(original_filename))
  ftp.quit()
end

Комментарии

Популярные сообщения из этого блога

Конвертируем Ruby-приложение в exe

JQuery и Rails - делаем кнопку "like it" со счетчиком

Резервное копирование базы данных по расписанию