Posted By

almazom on 10/22/09


Tagged

rails upload


Versions (?)

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


 / Published in: Rails
 

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

  1. source of file model *DataFile.rb* / Код класса DataFile.rb, который нужно создать в папке models
  2.  
  3.  
  4. require 'rutils'
  5.  
  6. def self.save(upload)
  7. spl = upload['datafile'].original_filename.split('.')
  8. ext = spl[spl.length-1]
  9.  
  10. name = File.basename(upload['datafile'].original_filename).gsub(/.#{ext}/,'').dirify<<'.'<<ext
  11.  
  12. directory = "htdocs/images"
  13. # create the file path
  14. path = File.join(directory, name)
  15. # write the file
  16. File.open(path, "wb") { |f| f.write(upload['datafile'].read) }
  17. return name
  18. end
  19.  
  20.  
  21.  
  22. -----------------------------
  23. uploading form view / форма выгрузки файла
  24.  
  25. <form action="/anycontrooller/upload_action" enctype="multipart/form-data" method="post">
  26. <p><input id="upload_datafile" name="upload[datafile]" size="30" type="file" /></p>
  27. <input name="commit" type="submit" value="Upload" />
  28. </form>
  29.  
  30. ---------------------------------
  31. Принимающий контроллер / receiving controller
  32.  
  33. def upload
  34.  
  35. begin
  36. post = DataFile.save(params[:upload])
  37. render :text =>'Файл был успешно выложен под именем <br />"<b>'<<post.to_s+'</b>"'
  38. rescue
  39. render :text =>'error'
  40. end
  41.  
  42. end

Report this snippet  

You need to login to post a comment.