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