Загрузка файлов по FTP из Rails
$ rails g controller Ftp upload../app/controllers/ftp_controller.rb
require 'net/ftp'Все просто. Устанавливаем соединение с 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
../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
Комментарии
Отправить комментарий