Return to Snippet

Revision: 19353
at October 22, 2009 05:53 by almazom


Updated Code
source of file model *DataFile.rb* / Код класса DataFile.rb, который нужно создать в папке models


require 'rutils'

def self.save(upload)
  spl = upload['datafile'].original_filename.split('.')
  ext = spl[spl.length-1]

  name =  File.basename(upload['datafile'].original_filename).gsub(/.#{ext}/,'').dirify<<'.'<<ext 

  directory = "htdocs/images"
  # create the file path
  path = File.join(directory, name)
  # write the file
  File.open(path, "wb") { |f| f.write(upload['datafile'].read) }
  return name
end



-----------------------------
uploading form view / форма выгрузки файла

<form action="/anycontrooller/upload_action" enctype="multipart/form-data" method="post">
  <p><input id="upload_datafile" name="upload[datafile]" size="30" type="file" /></p>
  <input name="commit" type="submit" value="Upload" />
</form>

---------------------------------
Принимающий контроллер / receiving controller

def upload

 begin
  post = DataFile.save(params[:upload])
  render :text =>'Файл был успешно выложен под именем <br />"<b>'<<post.to_s+'</b>"'
 rescue
  render :text =>'error'
 end

end

Revision: 19352
at October 22, 2009 05:30 by almazom


Initial Code
source of file model *DataFile.rb* / Код класса DataFile.rb, который нужно создать в папке models


require 'rutils'

def self.save(upload)
  spl = upload['datafile'].original_filename.split('.')
  ext = spl[spl.length-1]

  name =  File.basename(upload['datafile'].original_filename).gsub(/.#{ext}/,'').dirify<<'.'<<ext 

  directory = "htdocs/images"
  # create the file path
  path = File.join(directory, name)
  # write the file
  File.open(path, "wb") { |f| f.write(upload['datafile'].read) }
end



-----------------------------
uploading form view / форма выгрузки файла

<form action="/anycontrooller/upload_action" enctype="multipart/form-data" method="post">
  <p><input id="upload_datafile" name="upload[datafile]" size="30" type="file" /></p>
  <input name="commit" type="submit" value="Upload" />
</form>

---------------------------------
Принимающий контроллер / receiving controller

def upload

 begin
  post = DataFile.save(params[:upload])
  render :text =>'ok'
 rescue
  render :text =>'error'
 end

end

Initial URL


Initial Description
Можно выкладывать даже файлы, содержащие кириллицу в названии. Они будет подвергнуты транслитерации, пробелы и другие небезопасные символы будут заменены на "_".

Initial Title
rails file upload/ выгрузка файла в ruby on rails 2+

Initial Tags
rails

Initial Language
Rails