在Rails4和Mongoid4中,使用MongoDB's GridFS存储文件。
步骤1:在Gemefile文件中添加carrierwave-mongoid。
gem 'mongoid', git: 'https://github.com/mongoid/mongoid.git'
gem 'mongoid-grid_fs', github: 'ahoward/mongoid-grid_fs'
gem 'carrierwave', :git => "git://github.com/jnicklas/carrierwave.git"
gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'mini_magick', :git => 'git://github.com/probablycorey/mini_magick.git'
步骤2:创建carrierwave的配置文件config/initializers/carrierwave.rb。
#config/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.storage = :grid_fs
# Storage access url
config.grid_fs_access_url = "/upload/grid"
end
步骤3:在模型中设置要存储的文件
#app/models/user.rb
class User
include Mongoid::Document
mount_uploader :avatar, AvatarUploader
end
步骤4:创建上传文件的管理器。
#app/uploaders/avatar_uploader
class AvatarUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
def store_dir
"#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process :resize_to_limit => [200, 200]
end
end
步骤5:创建GridFS控制器。
#app/controllers/gridfs_controller.rb
class GridfsController < ApplicationController
def serve
gridfs_path = env["PATH_INFO"].gsub("/upload/grid/", "")
begin
gridfs_file = Mongoid::GridFS[gridfs_path]
self.response_body = gridfs_file.data
self.content_type = gridfs_file.content_type
rescue
self.status = :file_not_found
self.content_type = 'text/plain'
self.response_body = ''
end
end
end
步骤6:配置路由。
#config/routes.rb
get "/upload/grid/*path" => "gridfs#serve"
现在在视图中使用 user.avatar.url 将得到一个有效文件的路径。
分享到:
相关推荐
mongoid在您的代码中要求它: require 'carrierwave/mongoid' 或者,在Rails中,您可以将其添加到您的Gemfile中: gem 'carrierwave-mongoid' , :require => 'carrierwave/mongoid' 注意:如果使用Rails 4,则需要...
rails3-mongoid-devise, 示例 Rails 3.2应用,带有数据 Mongoid,用于验证 Rails 4.1有关设计的Rails 4.1示例应用程序,请参见:rails设计有一个用于设计的教程:Rails 设计教程。类似示例和教程这是来自 RailsApps...
gem 'carrierwave-imageoptimizer'然后执行: $ bundle或将其自己安装为: $ gem install carrierwave-imageoptimizer在Heroku上安装如果您在生产中使用Heroku,则必须使用来安装optipng和jpegoptim 。 有一些即插
使用 Rails 中的 Carrierwave 将图像上传到 S3。 克隆这个 repo,然后运行: bundle install rake db:migrate 之后,您需要从 AWS 获取密钥以上传到 S3。 将这些密钥存储在您的config/secrets.yml文件中。 这是...
CarrierWave FTP存储 该gem增加了对将FTP上传到支持安装安装最新版本: gem install carrierwave-ftp在您的代码中要求它: require 'carrierwave/storage/ftp'或者,在Rails中,您可以将其添加到您的Gemfile中: gem...
CarrierWave Ffmpeg编码器使用ffmpeg和streamio-ffmpeg rubygems添加音频/视频文件编码器。安装gem install carrierwave-ffmpeg-encoder使用捆绑器: gem 'carrierwave-ffmpeg-encoder'用法class AttachmentUploader...
它可以混入您的上传器设置中,并轻松为您上传的视频提供缩略图。 该软件目前是Alpha版,因此欢迎任何形式的OpenSource合作。 演示版 入门 先决条件 ffmpegthumbnailer二进制文件应位于PATH上。 安装 gem install ...
MongoDB 是一个流行的开源、分布式文档数据库,而 Mongoid 是一个 Ruby 框架,用于在 Ruby on Rails 或其他 Ruby 应用程序中方便地操作 MongoDB 数据库。它提供了 ORM(对象关系映射)功能,使得开发人员可以使用...
将文件上传存储在数据库中 该gem允许将上传内容存储在数据库中,例如。 在具有短暂文件系统(如Heroku)的平台上。 安装 # In: Gemfile gem 'carrierwave-blob' , github : "samvincent/carrierwave-blob" 用法 ...
8. **Gem依赖**:Rails项目通常依赖于许多社区gem,如Devise(用户认证)、Paperclip或Carrierwave(文件上传)、Pundit或CanCanCan(授权管理)、Bootstrap-sass(前端组件)等。 9. **版本控制**:项目很可能使用...
此压缩包中的 "rails-documentation-1-2-1.chm" 文件很可能是一个帮助文件或HTML编译的文档,用于详细解释 Rails 1.2.1 版本的各种特性和使用方法。 Rails 是一个高度灵活且强大的开发工具,它简化了 Web 开发过程...
入门在资产中添加所需的文件在application.js //= require jquery//= require jquery.jcrop在application.css *= require jquery.jcrop生成用于裁剪的咖啡脚本: rails generate cropper user avatar这应该给您一个...
在源码中,可以学习如何设置Redux store,编写reducer和action,以及如何在React组件中使用connect函数来连接store。 6. **React Router与Rails路由协作** React Router是React应用的路由解决方案,允许我们在...
- 在 Rails 应用中集成 Flexigrid,通常会在控制器中处理数据查询,然后通过 JSON 或者其他格式返回到前端。 - 视图部分,开发者会编写 HTML 和 JavaScript 代码,使用 Flexigrid 的 API 来展示和操作从 Rails ...
在Rails 2.0.2中,开发者可以体验到以下关键知识点: 1. **安装与设置**:Rails可以通过Gem包管理器进行安装。了解如何配置数据库连接、创建新项目、以及设置路由是初学者的基础。 2. **模型(Model)**:模型是...
rails-documentation-2-0-2
注意:此Gem是一个CarrierWave的组件,你需要配合CarrierWave一起使用,如果你需要直接用Aliyun OSS,可以用这个Gem。 注意:此gem是的扩展,因为它支持使用Alicloud OSS作为存储后端,如果要直接使用Alicloud OSS...
4. **Bundler**: Bundler是Ruby中的依赖管理工具,它允许开发者定义项目所需的Gem和版本,并确保在所有环境中一致。 5. **数据库**: 根据项目需求,你可能需要安装MySQL、PostgreSQL或SQLite等数据库系统。 6. **...
书中的这部分内容指导读者如何在Rails应用中使用流式传输技术。 最后,书中还介绍了Rails中的表单构建器(Form Builder),渲染器(Renderer)和railties辅助工具(Helpers)。Rails的表单构建器简化了表单创建过程...
Ajax-Rails-4-AJAX-Form.zip,rails 4 ajax表单示例,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的情况下...