`

ruby on rails 文件、图片上传

    博客分类:
  • ruby
阅读更多

运行环境,Mac 、ubuntu

                  rails 4.2.1

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

 其他主流上传gem包carrierwave和paperclip

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[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最新版

    例如,Devise用于用户认证,CanCanCan用于授权管理,Paperclip或Carrierwave处理文件上传,Stripe或PayPal集成支付功能,以及各种数据分析和报表生成库等。 总的来说,这个压缩包对于Ruby on Rails的初学者或希望...

    ruby on rails 3 tutorial.pdf

    《Ruby on Rails 3 Tutorial》是一本专门为初学者设计的指南,旨在帮助读者快速掌握Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby语言的一个开源框架,它采用MVC(Model-View-...

    Ruby On Rails中文教材(PDF)

    10. **Gem包管理**:Ruby的Gem系统使得安装和管理第三方库变得简单,如Devise用于用户认证,Paperclip或Carrierwave处理文件上传,Bootstrap提供前端UI组件等。 学习Rails的过程中,实践尤为重要。通过完成实际项目...

    ruby on rails在线考试系统

    Ruby on Rails(简称Rails)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程并提高效率。在这个“ruby on rails在线考试系统”中,我们可以探讨以下几...

    ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)

    在Rails 2.2.3时代,社区已经发展出很多插件和 gems(Ruby的扩展库),如Devise用于身份验证,CanCanCan进行授权管理,Paperclip或Carrierwave处理文件上传等。虽然这些可能需要适配老版本,但它们能极大地增强你的...

    ruby on rails社区网站开发源码

    13. **社区插件(Gems)**:Rails的生态系统中有大量高质量的第三方Gem,如Devise(用户认证)、Pundit(授权管理)、Paperclip或Carrierwave(文件上传)等,它们可以极大地扩展Rails的功能。 通过研究这个源码,...

    Ruby on Rails 指南 v5.0.1 中文版

    ### Ruby on Rails 指南 v5.0.1 中文版 #### Rails入门 - **前提条件**:为了能够顺利地开始Rails的学习之旅,读者需要具备一定的Ruby语言基础,并且对Web开发有一定的了解。 - **Rails是什么?**:Rails是一种...

    ruby on rails合集

    Ruby on Rails的社区非常活跃,拥有丰富的插件和gem(Ruby的库包),如Devise用于身份验证,CanCanCan进行权限管理,Carrierwave或Paperclip处理文件上传等。这些gem极大地扩展了RoR的功能,使得开发者可以快速搭建...

    Ruby on Rails 学习案例

    10. **Gem包管理**:Ruby的Gem是类似Python的pip或Node.js的npm的包管理工具,Rails应用广泛依赖于Gems,如Devise用于身份验证,Pundit或CanCanCan用于权限管理,Carrierwave或Paperclip处理文件上传等。 11. **...

    Ruby on Rails轻松使用

    10. **Gem包管理**:Ruby的Gem生态系统丰富,Rails项目通常依赖于大量第三方Gem,如Devise(身份验证)、CanCanCan(授权)、Carrierwave(文件上传)等,通过Gemfile管理这些依赖。 11. **Asset Pipeline**:Rails...

    Ruby on rails blog (博客程序)

    Ruby on Rails 是一款基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,使得开发者可以高效地构建功能丰富的Web应用程序。在这个“Ruby on Rails博客程序”中,我们将深入探讨如何在...

    征服-Ruby On Rails.rar

    Rails社区活跃,拥有大量的gem(相当于其他语言的库或插件),这些gem扩展了Rails的功能,例如Devise用于身份验证,CanCanCan用于授权管理,Pundit用于细粒度的权限控制,Paperclip或Carrierwave处理文件上传,...

    Agile Web Development With Ruby On Rails EN第一版

    另外,书中可能还会讲解Rails的插件和gem的使用,如Devise用于用户认证,CanCanCan进行权限控制,或者Paperclip或Carrierwave处理文件上传等。这些gem是Rails生态系统的重要组成部分,让开发者能够快速集成常用功能...

    Ruby on Rails敏捷开发最佳实践源代码

    6. **Gem生态系统**:Ruby on Rails依赖于Gem包管理系统,提供了丰富的第三方库和工具,如Devise用于身份验证,Pundit或CanCanCan处理授权,Carrierwave或Paperclip处理文件上传,以及ActiveAdmin或RailsAdmin这样的...

    Ruby on Rails入门例子

    在实际开发中,还可以利用各种 Gems(Ruby 社区的库)扩展功能,如 Devise 用于用户认证,Bootstrap 提供响应式布局,以及 Paperclip 或 Carrierwave 处理文件上传等。 通过这个入门例子,你将了解 Rails 的基本...

    Wrox - Professional Ruby on Rails (Feb 2008)

    书中可能介绍了如何使用和开发Gem,以及常见的Rails插件如Devise(身份验证)、CanCanCan(授权)和Paperclip(文件上传)等。 9. **部署与性能优化**:书中可能会讲解如何将Rails应用部署到服务器,如使用...

    Youtube等视频共享应用程序,采用Ruby on Rails、Hotwire、Tailwind CSS构建.zip

    通过深入研究和理解这些文件,你可以学习如何将Ruby on Rails、Hotwire和Tailwind CSS结合起来,构建出一个功能丰富的视频共享应用。 总的来说,这个项目提供了从后端数据处理到前端交互体验的完整实现,对于想要...

    ruby on rails 安装手记

    最后,Rails社区非常活跃,有许多优秀的第三方gem库可以扩展Rails的功能,例如Devise用于用户认证,CanCanCan处理授权,Paperclip或Carrierwave处理文件上传等。通过`gem 'gem_name'`在`Gemfile`中添加gem,然后运行...

    ruby on rails 2.3.5 api html版

    10. **插件和Gem**:Rails的生态系统中,Gem是第三方库的主要形式,它们提供了额外的功能,如Devise用于身份验证,CanCanCan用于授权,Paperclip或Carrierwave处理文件上传等。 11. **部署**:了解如何将Rails应用...

Global site tag (gtag.js) - Google Analytics