ruby on rails 文件、图片上传

这篇文章主要分享ruby on rails 文件图片上传,文章内容主要包括关于ruby,rails,文件等,希望对大家有所帮助。

运行环境,Mac 、ubuntu

                  rails 4.2.1

以前做过几次图片文件上传的功能,但是每次做的时候都要重新想怎么做,汗。。。,还是记下来吧。

1.在页面添加form表单上传图片或者文件

=form_for :file ,:url=> '/add_excel' do |f|
  =f.file_field :file , :accept => '.docx .txt'
  =f.submit

    在:accept 中可以指定上传文件的类型,不符合后缀名的文件不可以上传,可以制定多个

2.在contrller 里获取文件的拓展名

File.extname(params[:file][:file].original_filename)

这里嵌套有点深,而且original_filename不能用[: original_filename]获取,因为params的数据是这样的。

Parameters: {"utf8"=>"✓", "authenticity_token"=>"ZzuhBoEuOH1i4Gp68GrVe57uA3X0dmhMH4SjanDuTJ3TMUbOJhld1+pD7JXtt7urTQUfrdruoTuwrcQZcWWBpw==", "file"=>{"file"=>#<ActionDispatch::Http::UploadedFile:0x007fc009933ac0 @tempfile=#<Tempfile:/var/folders/ks/tln9bzyj1j15m12mpvtq54wc0000gn/T/RackMultipart20150603-56080-cj4lsy.docx>, @original_filename="“吃货”游戏PRD(5月19).docx", @content_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"\xE2\x80\x9C\xE5\x90\x83\xE8\xB4\xA7\xE2\x80\x9D\xE6\xB8\xB8\xE6\x88\x8FPRD\xEF\xBC\x885\xE6\x9C\x8819\xEF\xBC\x89.docx\"\r\nContent-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document\r\n">}, "commit"=>"Save File"}

3. 将文件的内容读出来

content = params[:file][:file].read

4.把读出来的文件内容写入到指定的文件里

File.open(file_path,'wb+') do |item|
  item.write(content)
end

   拼接路径时注意把2.取到的扩展名添加上

   如果文件不存在File.open会先创建再打开

 5.最后将文件路径存到数据库里方便前台页面展示

以上关于ruby on rails 文件、图片上传的文章内容纯属个人见解,文章由web开发乐园收集自网络,希望对您有参考价值。

您可以选择一种方式赞助本站

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: