главная -> статьи -> On-line приложения на платформе Ruby on Rails (часть 2)
 
Загрузка файлов на сервер

  Как уже упоминалось в статье Сетевые приложения (разделы Выбор языков программирования и upload), загрузка файлов на сервер не для всех языков является простой ("родной") задачей.

  К счастью, и здесь Ruby on Rals на высоте. В разделе интерфейс 2 показан пример формы с вызовом :action => "upld".

  В контроллере books_controller определяется метод:

def upld
 @dir_pdf = RAILS_ROOT + "/public/bk_pdf/"
 @url_pdf = "/public/bk_pdf/bk"+ session[:myb_pdf]+".pdf"
 @my_file = @params[:src]
 @my_over = params[:overw]
 @my_path = @dir_pdf + "bk" + session[:myb_pdf] + ".pdf"
 	if !FileTest.exists?(@my_path) or params[:overw] == "on"
	  File.open(@my_path,"wb",0664) do |fp|
 	  FileUtils.copy_stream(@my_file, fp)
 	   end
 	  @rend_str = "<script type='text/javascript'>this.opener.location.reload();
	  this.close();</script>"
 	else
 	  @rend_str = "<center><p><font color='red'><b>Файл  с таким именем уже " +
	  "существует,<br> чтобы переписать необходимо повторить процедуру выбора "+
	  "файла и  установить 'птичку' переписать</b></font></p>"+
	  "<input type='button' onclick='parent.close()'; value=' OK ' />"  
	end
 render :text => @rend_str 
end 

  Обратите внимание:
а) каталог на сервере для загрузки файлов - "/public/bk_pdf/";
б) @my_over = params[:overw] параметр "перезаписи " (в примере, раздел интерфейс 2 не показан checkbox с именем overw);
в) файл переименовывается на сервере
"bk" + session[:myb_pdf] + ".pdf"/.

  При необходимости сохранить неизменным имя файла на сервере формируем путь:
@my_path = @dir_pdf + params[:src].original_filename
не забывая о sanitize_filename

далее

   
  © 2008   Сединко А.М.
  © 2004 design by   kir
Hosted by uCoz