paperclip目前最新版本为2.3.8:
$ gem install paperclip
通过bundle安装,在Gemfile中加入以下配置:
gem 'paperclip', '~> 2.3.6'
然后运行
bundle install
如何使用
比如用户模型中需要加入头像这个功能,那么,我们得先生成一个添加paperclip默认字段的migration:
$ rails g migration add_avatar_columns_to_users
然后在add_avatar_columns_to_users.rb中加入以下代码:
class AddAvatarColumnsToUser < ActiveRecord::Migration
def self.up
add_column :users, :avatar_file_name, :string
add_column :users, :avatar_content_type, :string
add_column :users, :avatar_file_size, :integer
add_column :users, :avatar_updated_at, :datetime
end
def self.down
remove_column :users, :avatar_file_name
remove_column :users, :avatar_content_type
remove_column :users, :avatar_file_size
remove_column :users, :avatar_updated_at
end
end
然后运行:
$ rake db:migrate
paperclip默认的字段添加完以后,我们需要在user模型中做一些配置:
class User < ActiveRecord::Base
has_attached_file :avatar,
:url => "/system/pictures/:id/:style_:basename.:extension",
:path => ":rails_root/public/system/pictures/:id/:style_:basename.:extension",
:styles => { :medium => "300x300>", :thumb => "100x100>" }
validates_attachment_size :avatar, :less_than => 2.megabytes
end
在这里需要做几点解释,第一,has_attached_file :avatar中的:avatar是根据字段名字来的,因为字段名字统一名称成了avatar_xxxx_xxx,如果字段名字命名成 data_file_name等,那么 配置将改为has_attached_file :data 第二,validates_attachment_size :avatar是用来限制文件大小的。
在view中,我们应该对user的form进行如下改造:
user_path, :html => { :multipart => true } do |form| %>
图片上传后,paperclip会自动根据user模型中的配置,把图切成你想要的尺寸,在这里,因为涉及到切图,所以将会用到imagemagick这个包,所以这个包是需要安装的:
Ubuntu下:
$ sudo apt-get install imagemagick
装完imagemagick后,就可以成功切图了。那么,我们要如何取出响应尺寸的图片呢?
这样子就可以有简单的切图功能了。
链接:
https://github.com/thoughtbot/paperclip
分享到:
相关推荐
Paperclip允许你验证上传文件的类型,防止恶意文件上传。 4. **存储路径自定义** 可以根据需求自定义文件在服务器上的存储路径。 5. **版本控制** Paperclip允许保留文件的历史版本,方便回滚或比较。 6. **回...
3. **Strong Parameters**: 在控制器中,我们需要使用`strong_parameters`来白名单化并允许文件参数。例如,如果你有一个`image`参数,你需要在控制器中这样写: ```ruby params.require(:user).permit(:name, :...
6. **测试**:确保为文件上传功能编写测试,覆盖上传、删除、替换和访问已上传文件的各种场景。升级后,这些测试能帮助识别并修复可能出现的问题。 7. **性能优化**:考虑文件上传的性能,如分块上传、预处理(如...
以上就是使用Rails上传和转换视频的基本流程。在开发过程中,确保遵循最佳实践,如安全存储文件、优化性能、以及考虑跨平台兼容性。通过不断学习和实践,你可以构建出高效且功能丰富的视频处理系统。
例如,Devise用于用户认证,CanCanCan用于授权管理,Paperclip或Carrierwave处理文件上传等。 此外,本书还会介绍Rails的安全实践,包括防止SQL注入、XSS攻击等常见Web安全问题。你将学习如何使用strong parameters...
1. **Ruby on Rails框架**:Ruby上传文件通常是在Ruby on Rails框架下进行的,这是一个用于快速开发Web应用的全栈框架,它遵循MVC(模型-视图-控制器)架构模式。 2. **Controller**:在Rails中,控制器负责处理...
- 使用Paperclip处理上传的文件,包括存储和缩放等操作。 通过上述步骤,即可实现一个完整的Rails多图上传功能。此方案不仅提供了前端用户友好的交互体验,还利用了Paperclip的强大功能来简化后端处理流程。
Ruby-CarrierWave 是一个流行的文件上传库,专为Ruby Web框架如Rails和Sinatra设计,旨在提供一种更优雅、更灵活的方式来处理文件上传。它弥补了Ruby标准库在处理文件上传时的不足,提供了丰富的功能和易于定制的...
4. **上传文件进度**: 对于大文件上传,用户可能需要知道文件上传的进度。这可以通过JavaScript库如jQuery-File-Upload或Rails的Turbolinks-ProgressBar插件实现。这些插件通过监听文件上传事件,更新进度条,提升...
例如,Devise用于用户认证,CanCanCan用于授权管理,Paperclip或Carrierwave处理文件上传,Stripe或PayPal集成支付功能,以及各种数据分析和报表生成库等。 总的来说,这个压缩包对于Ruby on Rails的初学者或希望...
7. **Rails插件与Gem**:Rails社区提供了丰富的插件和Gem,如Devise用于身份验证,Paperclip或Carrierwave处理文件上传,Resque或Sidekiq实现后台任务队列。掌握如何选择和使用这些工具来扩展应用功能。 8. **Rails...
在Rails 2.2.3时代,社区已经发展出很多插件和 gems(Ruby的扩展库),如Devise用于身份验证,CanCanCan进行授权管理,Paperclip或Carrierwave处理文件上传等。虽然这些可能需要适配老版本,但它们能极大地增强你的...
10. **插件和Gem**:Rails的生态系统中,Gem是第三方库的主要形式,它们提供了额外的功能,如Devise用于身份验证,CanCanCan用于授权,Paperclip或Carrierwave处理文件上传等。 11. **部署**:了解如何将Rails应用...
此外,Rails提供了丰富的插件和gem(Ruby gem),例如Devise用于身份验证,CanCanCan处理授权,Paperclip或Carrierwave用于文件上传等,这些都能极大地增强应用的功能。 在开发过程中,Rails还提供了TDD(测试驱动...
10. **社区工具和插件**:介绍一些常用的Rails gem,如Devise用于用户认证,Paperclip或Carrierwave处理文件上传等。 附带的`rr2-code.zip`文件很可能包含了书中各章节示例代码,这将有助于读者更好地理解和实践书...
3. **数据库配置**:Rails默认使用SQLite数据库,但也可以配置为使用MySQL、PostgreSQL等其他数据库。在`config/database.yml`文件中进行配置。 4. **模型(Model)**:模型代表数据和业务逻辑,一般与数据库表对应...
6. **插件和gem**:Rails社区有大量的插件和gem可供扩展功能,如Devise用于用户认证,Cancancan用于授权,或者Paperclip和Carrierwave处理文件上传。 7. **Ajax和JavaScript**:Rails 2.2.2支持集成Prototype ...
例如,Devise用于用户认证,Cancancan进行权限控制,Paperclip或Carrierwave处理文件上传等。 8. 安全性:Rails内置了一些安全特性,如CSRF(跨站请求伪造)防护、XSS(跨站脚本攻击)防护以及参数过滤等。在考试...
10. **社区和生态系统**:Rails拥有庞大的开发者社区,产生了许多优秀的第三方Gem库,如Devise(身份验证),Paperclip(文件上传),Pundit(权限控制)等,丰富了Rails的功能。 Rails 1.0.0的发布标志着Web开发...