Wysyłanie plików przez FTP na serwer

Transkrypt

Wysyłanie plików przez FTP na serwer
Wysyłanie plików przez FTP na serwer
Ten art ykuł pokaże jak łat wo można wysłać dowolny plik na nasz serwer przez FTP
Na początek należy w widoku których chcemy mieć form-a wysyłającego wstawić :
#app/views/images/new.html.erb
<%= form_tag '/ftp/upload', :method => :post, :multipart => true do %>
<center><b><%= label_tag(:q, "Wybierz zdjęcie:") %></b>
<%= file_field_tag "file" %><br></center>
<div class="field">
<%= label_tag :krótki_opis %>
<%= text_area_tag :opis,nil, :class => "images_form_opis" %>
</div>
<%= submit_tag "Dodaj Zdjęcie" %>
<%= button_tag "Powrót",:type => 'button',:class => 'button',:onclick => "location.href = '#{websites_path}'" %>
<% end %>
W kontrolerze do którego będzie trafiał formularz dodajemy na górze:
#app/controllers/images_controller.rb
require 'net/ftp'
w sekcji create należy dodać:
#app/controllers/images_controller.rb
file = params[:file]
ftp = Net::FTP.new('adres serwera')
ftp.passive = true
#ten wiersz jest wymagany jeśli aplikacja jest na heroku
ftp.login(user = ENV['ftp_login'], passwd = ENV['ftp_haslo']) #tu użyłem config vars standardowo jest user = "login", passwd = "hasło"
ftp.storbinary("STOR " + file.original_filename, StringIO.new(file.read), Net::FTP::DEFAULT_BLOCKSIZE)
ftp.quit()
warto jest też sprawdzić czy plik o takiej nazwie jest już na serwerze można to zrobić w ten
sposób:
#app/controllers/images_controller.rb
file = params[:file]
@images = Image.find_all_by_nazwa(file.original_filename).count
if (@images == 0)
ftp = Net::FTP.new('adres serwera')
ftp.passive = true
ftp.login(user = ENV['ftp_login'], passwd = ENV['ftp_haslo'])
ftp.storbinary("STOR " + file.original_filename, StringIO.new(file.read), Net::FTP::DEFAULT_BLOCKSIZE)
ftp.quit()
else
redirect_to "/images/new", :notice => 'Uwaga! Zdjecie o takiej nazwie juz jest w bazie!'
end
w tym momencie już dowolny plik bez problemu może być wysyłany na serwer
Ostatnia modyfikacja 00:19 17-04-2013 przez Miłosz O siński
Kateg o ria: RUBY O N RAILS

Podobne dokumenty