很多网站都允许用户上传文件,如何管理这些上传的文件呢?以paperclip为例,其默认文件布局结构为:
@default_options ||= {
:url => "/system/:attachment/:id/:style/:basename.:extension",
:path => ":rails_root/public/system/:attachment/:id/:style/:basename.:extension",
:styles => {},
:default_url => "/:attachment/:style/missing.png",
:default_style => :original,
:validations => {},
:storage => :filesystem
}
每个id都会占据一个目录,问题是文件系统的子目录数量是有限制的,ext3是32000,ext4是64000,所以网站的数据量达到规模时,默认的文件布局并不合适。比较好的方式是采用id_partition,即把id表示成九位,并且分成3级目录,例如:
1 => 000/000/001
10000 => 000/010/000
100000000 => 100/000/000
这样就无须为文件系统的子目录数量限制担忧了。实现上同样以paperclip为例:
has_attached_file :picture, :styles => {:medium => "480x360>", :thumb => "120x90>", :original =>"480x360>"},
:path => ":rails_root/public/uploads/:class/:id_partition/:style/picture.:extension",
:url => "/uploads/:class/:id_partition/:style/picture.:extension"
其中的:id_partition是paperclip内部支持的。
分享到:
相关推荐
安装由于 PaperclipDatabaseAttachmentsResponder 覆盖了 paperclip_database 的内部 api,因此使用精确的'2.2.1'版本。 将这些行放入您的Gemfile : gem 'paperclip_database', '2.2.1'gem 'paperclip_database_...
在Ruby on Rails框架中,Paperclip是一个非常流行的用于处理文件上传的库。它提供了一种简单而优雅的方式来管理和处理模型中的附件,如图片、文档等。Paperclip与ActiveRecord紧密集成,使得在Rails应用中添加文件...
自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 系统依赖 配置 数据库创建 数据库初始化 ... 如果您不打算运行rake doc:app请随意使用其他标记语言。
您可能想要涵盖的内容: Ruby版系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列、缓存服务器、搜索引擎等) 部署说明… 如果您不打算运行rake doc:app请随意使用不同的标记语言。
这个 gem 使用常规文件系统存储提供程序和 ActiveRecord 通过自动附件加密扩展了 Paperclip。 安装 将此行添加到应用程序的 Gemfile 中: gem 'paperclip-storage-encrypted_filesystem', git: '...
挑战和最终结果这篇文章介绍了基本 Rails CRUD 应用程序的构建,并专门解决了以下问题: + 将回形针、heroku、aws s3 和friendly_id 集成到允许图像上传的基本rails CRUD 应用程序中。 + 集成了一个 css 库 jasny-...
要使用,请将以下内容添加到您的Gemfile中: gem 'paperclip', github: "thoughtbot/paperclip" gem 'paperclip_torrent', github: "fattymiller/paperclip_torrent" 在模型中,正常设置has_attached_files ,...
回形针水印描述这是一个简单的 Paperclip 处理器,用于在 Paperclip 的图像上应用水印。 水印将调整大小以适合基本图像。 很少有选项可用于指定位置和不透明度: watermark_distance_from_top : 以百分比指定从顶部...
使用PaperClip时,你需要在你的ActiveRecord模型中包含`has_attached_file`方法,这会为模型添加新的属性来管理文件。例如,如果你有一个`User`模型,你可以添加一个`avatar`字段来处理头像上传: ```ruby class ...
Paperclip - Responsive Professional Theme for Business Projects and Mobile Apps Perfect for business and personal use Built with LESS Looks great on all major browsers, tablets and phones 21 unique ...
使用环境变量PAPERCLIP_REDIS来定义 redis 服务器的位置 PAPERCLIP_REDIS=http://remotehost:6379/ 特约paperclip_redis 查看最新的 master 以确保该功能尚未实现或 bug 尚未修复。 查看问题跟踪器以确保有人...
DelayedPaperclip使您可以通过在后台任务中处理附件 为什么? Paperclip最常见的用例是轻松将图像文件附加到ActiveRecord模型。 大多数情况下,这些图像文件将具有多种样式,并且在创建它们时需要调整大小。 这...
Mongoid ::回形针将集成到。 实际上,与使用回形针和ActiveRecord ORM相比,此设置更容易,更快捷。... 与ActiveRecord不同,Mongoid不使用迁移,因此我们不需要在单独的文件中定义Paperclip列。 调用h
这不再维护!! 请改用。 回形针S3收纳 ... 可以为用户提供access_key_id的s3_credentials哈希选项和相反,使用secret_access_key 。 如果您使用的是 ,则可以使用 config:add 命令: heroku config:add
paperclip-av-transcoder, 使用 ffmpeg/avconv的Paperclip 音频/视频转码器 Paperclip 转码器使用 ffmpeg/avconv的Paperclip 音频/视频转码器。这是( https://github.com/owahab/paperclip-ffmpeg )的替代品。状态
附加的文件保存到文件系统中,并通过易于理解的规范在浏览器中引用,该规范具有明智而有用的默认值。 有关更多详细选项,请参见有关has_attached_file的文档。 完整的在线。 要求 Ruby和Rails Paperclip现在需要...
如果没有,您可以使用brew install imagemagick通过 Homebrew 安装它如果您还没有 Rails 4.0.0,可以通过在终端中输入以下内容来获取它: gem install rails --version 4.0.0 使用rails _4.0.0_ new <...
access_key_id: ' YOUR_ACCESS_KEY ' secret_access_key: ' YOUR_SECRET_ACCESS_KEY ' region: ' YOUR_BUCKET_REGION ' production: << : *default test: <<: *default 保存文件后,将s3信息添加...
Annota是一个虚拟的生产力环境,可将用户工作流程集中在Web浏览器中,并使用户能够使用一套内置工具来可视化,组织和管理其研究项目。 :graduation_cap: :pencil: :Japanese_symbol_for_beginner: :memo: :...
Paperclip 是 Rails 框架的一个插件,用于扩展 ActiveRecord 以支持简单的文件附件的功能。 标签:Paperclip