- 浏览: 168259 次
- 性别:
- 来自: 广州
最新评论
-
dongxuef:
正奇怪呢,原来你也没深究.源码中_params被default ...
在Rails的controller中访问params的一个小细节 -
sunsonavaj:
Rails 3 下自定义错误信息显示页面 -
Hooopo:
Thx!
ubuntu下让netbeans的字体变得好看些 -
ybffnst:
paperclip 对错误消息的处理是对字符串进行处理的,不支 ...
如何自定义处理ActiveRecord中的errors信息 -
wozhidao:
这个方法有个很大的bug,远程图片的时候是取不到扩展名的,上传 ...
paperclip定制文件名
在新项目中使用了paperclip这个文件上传插件,一切都很满意,但是对于它不能自定义文件名就比较郁闷了,一直想实现这个功能,不过一直没时间去看paperclip的源代码(其实因为懒)。
我说的自定义文件名,不是网上多数教程所说的修改文件存储的文件夹路径,打个比方,我上传了一个叫做 test.gif 的文件,服务器上存储的文件的文件名同样是 test.gif ,而我希望是系统随机地指定一个文件名给上传的文件,我希望在服务器上存储的文件名不是原来的 test.gif,而是 2010070100000.gif 这种由我指定的文件,这样可以统一文件,防止用户上传的文件是一些乱七八糟的名字,而且我们的项目面向中英文用户,当然是不希望英文用户看到一些中文名字的文件。
废话说完,上代码。
这个代码不是我写的,在网上看到的,原文链接 http://trevorturk.com/2009/03/22/randomize-filename-in-paperclip/
在需要上传文件的model中加入如下代码:
代码一目了然,原理就是在保存之前,先把文件名给改了,简单直接。
paperclip 这个文件上传插件比起 file_column要好用得多,而且 file_column 已经多年没有更新了,推荐大家使用 paperclip。
另外,如果你使用jQuery的话,配合 jQuery Multiple File Upload Plugin 这个插件,相当的好用。 http://www.fyneworks.com/jquery/multiple-file-upload/
我个人不太喜欢直接修改插件的源代码(除非有bug)。如果所有的model都使用随机名的话,我目前使用的是继承(项目需求是这样),所以要上传文件的model都继承自 Attachment 类,这样只要改 Attachment 就可以了。当然这是由我项目需要决定的。
比较通用的做法是这样:
然后在所有要使用这个功能的model加上一句:
个人以为这样比改插件的源代码要好。
写到module里也可以。。根据项目而定。。
昨晚看到你的新帖,一下子興起就回了....哥們我班門弄斧了...嘻嘻
我以前一直是使用file_column这个插件的,也没想过要换其它,不过file_column实在是太旧了,最新的代码还是2008年提交的,这次上Rails 3就把file_column给换掉了,我没有paperclip的使用经验,所以你的经验之谈绝对不是班門弄斧。
我个人不太喜欢直接修改插件的源代码(除非有bug)。如果所有的model都使用随机名的话,我目前使用的是继承(项目需求是这样),所以要上传文件的model都继承自 Attachment 类,这样只要改 Attachment 就可以了。当然这是由我项目需要决定的。
比较通用的做法是这样:
然后在所有要使用这个功能的model加上一句:
个人以为这样比改插件的源代码要好。
昨晚看到你的新帖,一下子興起就回了....哥們我班門弄斧了...嘻嘻
我说的自定义文件名,不是网上多数教程所说的修改文件存储的文件夹路径,打个比方,我上传了一个叫做 test.gif 的文件,服务器上存储的文件的文件名同样是 test.gif ,而我希望是系统随机地指定一个文件名给上传的文件,我希望在服务器上存储的文件名不是原来的 test.gif,而是 2010070100000.gif 这种由我指定的文件,这样可以统一文件,防止用户上传的文件是一些乱七八糟的名字,而且我们的项目面向中英文用户,当然是不希望英文用户看到一些中文名字的文件。
废话说完,上代码。
这个代码不是我写的,在网上看到的,原文链接 http://trevorturk.com/2009/03/22/randomize-filename-in-paperclip/
在需要上传文件的model中加入如下代码:
before_create :randomize_file_name private def randomize_file_name #archives 就是你在 has_attached_file :archives 使用的名字 extension = File.extname(archives_file_name).downcase #你可以改成你想要的文件名,把下面这个方法的第二个参数随便改了就可以了。 self.archives.instance_write(:file_name, "#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}") end
代码一目了然,原理就是在保存之前,先把文件名给改了,简单直接。
paperclip 这个文件上传插件比起 file_column要好用得多,而且 file_column 已经多年没有更新了,推荐大家使用 paperclip。
另外,如果你使用jQuery的话,配合 jQuery Multiple File Upload Plugin 这个插件,相当的好用。 http://www.fyneworks.com/jquery/multiple-file-upload/
评论
8 楼
wozhidao
2011-08-24
这个方法有个很大的bug,远程图片的时候是取不到扩展名的,上传的图片是没有扩展名的
ruby-1.9.2-p290 :007 > file = "http://5433.com/images/ad/5173.jpg?1314083389" => "http://5433.com/images/ad/5173.jpg?1314083389" ruby-1.9.2-p290 :008 > file = open(img) => #<File:/tmp/open-uri20110824-16514-1w7gpmt> ruby-1.9.2-p290 :009 > File.extname(file) => ""
7 楼
木剑先生
2010-07-04
yangzhihuan 写道
木剑先生 写道
如果有N多model需要使用随机文件名,你所有的MODEL都要这么改
可以修改paperclip插件下lib/paperclip/attachment.rb
在assign(upload file)方法中有一个instance_write(:file_name,"#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}")
这样就一劳永逸了
可以修改paperclip插件下lib/paperclip/attachment.rb
在assign(upload file)方法中有一个instance_write(:file_name,"#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}")
这样就一劳永逸了
我个人不太喜欢直接修改插件的源代码(除非有bug)。如果所有的model都使用随机名的话,我目前使用的是继承(项目需求是这样),所以要上传文件的model都继承自 Attachment 类,这样只要改 Attachment 就可以了。当然这是由我项目需要决定的。
比较通用的做法是这样:
module AbstractAttachment def self.included(model) model.before_create :randomize_file_name end private def randomize_file_name #archives 就是你在 has_attached_file :archives 使用的名字 extension = File.extname(archives_file_name).downcase #你可以改成你想要的文件名,把下面这个方法的第二个参数随便改了就可以了。 self.archives.instance_write(:file_name, "#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}") end end
然后在所有要使用这个功能的model加上一句:
class Attachment include AbstractAttachment end
个人以为这样比改插件的源代码要好。
写到module里也可以。。根据项目而定。。
6 楼
yangzhihuan
2010-07-03
fireflyman 写道
yangzhihuan 写道
@fireflyman 你真是热情如火啊,太感谢了。
我用paperclip已经一段时间了,基本的用法还是会的,不过就是没有深入研究。
我用paperclip已经一段时间了,基本的用法还是会的,不过就是没有深入研究。
昨晚看到你的新帖,一下子興起就回了....哥們我班門弄斧了...嘻嘻
我以前一直是使用file_column这个插件的,也没想过要换其它,不过file_column实在是太旧了,最新的代码还是2008年提交的,这次上Rails 3就把file_column给换掉了,我没有paperclip的使用经验,所以你的经验之谈绝对不是班門弄斧。
5 楼
yangzhihuan
2010-07-03
木剑先生 写道
如果有N多model需要使用随机文件名,你所有的MODEL都要这么改
可以修改paperclip插件下lib/paperclip/attachment.rb
在assign(upload file)方法中有一个instance_write(:file_name,"#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}")
这样就一劳永逸了
可以修改paperclip插件下lib/paperclip/attachment.rb
在assign(upload file)方法中有一个instance_write(:file_name,"#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}")
这样就一劳永逸了
我个人不太喜欢直接修改插件的源代码(除非有bug)。如果所有的model都使用随机名的话,我目前使用的是继承(项目需求是这样),所以要上传文件的model都继承自 Attachment 类,这样只要改 Attachment 就可以了。当然这是由我项目需要决定的。
比较通用的做法是这样:
module AbstractAttachment def self.included(model) model.before_create :randomize_file_name end private def randomize_file_name #archives 就是你在 has_attached_file :archives 使用的名字 extension = File.extname(archives_file_name).downcase #你可以改成你想要的文件名,把下面这个方法的第二个参数随便改了就可以了。 self.archives.instance_write(:file_name, "#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}") end end
然后在所有要使用这个功能的model加上一句:
class Attachment include AbstractAttachment end
个人以为这样比改插件的源代码要好。
4 楼
木剑先生
2010-07-03
如果有N多model需要使用随机文件名,你所有的MODEL都要这么改
可以修改paperclip插件下lib/paperclip/attachment.rb
在assign(upload file)方法中有一个instance_write(:file_name,"#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}")
这样就一劳永逸了
可以修改paperclip插件下lib/paperclip/attachment.rb
在assign(upload file)方法中有一个instance_write(:file_name,"#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}")
这样就一劳永逸了
3 楼
fireflyman
2010-07-03
yangzhihuan 写道
@fireflyman 你真是热情如火啊,太感谢了。
我用paperclip已经一段时间了,基本的用法还是会的,不过就是没有深入研究。
我用paperclip已经一段时间了,基本的用法还是会的,不过就是没有深入研究。
昨晚看到你的新帖,一下子興起就回了....哥們我班門弄斧了...嘻嘻
2 楼
yangzhihuan
2010-07-03
@fireflyman 你真是热情如火啊,太感谢了。
我用paperclip已经一段时间了,基本的用法还是会的,不过就是没有深入研究。
我用paperclip已经一段时间了,基本的用法还是会的,不过就是没有深入研究。
1 楼
fireflyman
2010-07-02
paperclip不是早就开始用了吗?今天刚好也在搞文件上传,不过是用fleximage上传....下面有些paperclip的资料,分享下咯....
(1)Paperclip 简单教程
http://cn.asciicasts.com/episodes/134-paperclip
这是官方的视频教程,不过不是很全
(2)利用paperclip实现图片上传
http://www.cnblogs.com/rubylouvre/archive/2009/07/21/1527505.html
而司徒正美这个就详细很多了
(3)Rails文件上传利器——paperclip笔记
http://yuan.iteye.com/blog/604174
圆圆也写过这方面的笔记
(4)利用paperclip实现图片上传
http://www.pin5i.com/showtopic-24987-2.html
如果没作相关设置的时候,会使得在编辑上传的图片时无法删除硬盘上的图片,这里有相关的解决方法.
(5)rails3上安装paperclip
http://chinaonrails.com/topic/view/4030.html
rails3终究要来的...这里有相关办法
(1)Paperclip 简单教程
http://cn.asciicasts.com/episodes/134-paperclip
这是官方的视频教程,不过不是很全
(2)利用paperclip实现图片上传
http://www.cnblogs.com/rubylouvre/archive/2009/07/21/1527505.html
而司徒正美这个就详细很多了
(3)Rails文件上传利器——paperclip笔记
http://yuan.iteye.com/blog/604174
圆圆也写过这方面的笔记
(4)利用paperclip实现图片上传
http://www.pin5i.com/showtopic-24987-2.html
如果没作相关设置的时候,会使得在编辑上传的图片时无法删除硬盘上的图片,这里有相关的解决方法.
(5)rails3上安装paperclip
http://chinaonrails.com/topic/view/4030.html
rails3终究要来的...这里有相关办法
发表评论
-
Rails 2.3.12下遇到的named route的诡异问题
2011-08-14 21:18 1660周五的时候把网站升级到Rails 2.3.12,本来在本地测试 ... -
ActionMailer的一些配置
2011-08-14 20:59 1667一般情况下,如果你使用gmail的话,都是这样配置的: A ... -
如何自定义处理ActiveRecord中的errors信息
2011-07-26 23:33 2900今天写代码的时候,客服MM向我反馈了一个问题,这个问题本身是很 ... -
Rails 3 下自定义错误信息显示页面
2010-07-08 15:21 3764大家都知道想在Rails下自定义错误显示的页面是修改 resc ... -
Sinatra:一个可以作为Rails有益补充的框架. 简洁而不简单
2010-04-04 15:08 7170一个基于Sinatra的小程序 前些天有一个需求,需要写一个 ... -
require特定版本的gem
2010-03-31 21:07 2580今天有一个需求要单独地使用ActiveRecord,但是我的机 ... -
从Rails 2.3.5 升级到 Rails 3.0 beta
2010-03-27 22:12 2156因为有一个新的项目打算使用Rails 3.0 beta,所以先 ... -
命名时请留意Rails下的关键字
2010-01-22 17:36 2066前些天我在做一个支付集成的接口,对方返回的结果串里面有一个 e ... -
rails下自定义出错页面
2010-01-22 17:17 2356rails出错的时候,一般都是跳转到错误跟踪的页面下,这样在开 ... -
rails下修改http头(http header)
2010-01-22 17:08 5201其实就是修改response中一个叫做headers的Hash ... -
在Rails的controller中访问params的一个小细节
2009-12-02 22:36 7300大家都知道controller中的params其实是一个Has ... -
Rails开发工具之Vim
2009-10-19 16:06 12298学习和开发Ruby & Rails ... -
Thinking Sphinx + Coreseek + rmmseg的安装与使用
2009-10-06 23:48 3817要在Rails上使用全文检索,选择一直不多,以前我一直是使用F ... -
Migrations流水帐
2009-07-11 16:02 1282对于Rails的迁移功能Migrations,一直都只是看一下 ... -
重新安装ruby遇到的问题
2009-06-13 13:14 1325昨天重装了操作系统,要重新安装ruby环境. 因为以前 ... -
JRuby使用经验
2009-05-10 17:06 1973首先我是一个Java程序员 ... -
使用ri查看Rails的API
2009-03-25 23:31 4484我一直都比较习惯直接到 http://www.ruby-doc ... -
Ubuntu Linux下ruby 1.9.1和Rails 2.3升级记录
2009-03-22 00:22 4437安装 ... -
今晚用上了ruby的动态方法调用,open class和mixin三大神器
2009-01-12 00:43 2229今晚人品爆发,一举用上了ruby的动态方法调用,open cl ... -
让rails中多态关联的方法名更加人性化
2008-12-02 22:55 2433rails中的多态关联功能,很好很强大。 但是多态关联的方法 ...
相关推荐
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 ...
在Ruby on Rails框架中,Paperclip是一个非常流行的用于处理文件上传的库。它提供了一种简单而优雅的方式来管理和处理模型中的附件,如图片、文档等。Paperclip与ActiveRecord紧密集成,使得在Rails应用中添加文件...
paperclip-av-transcoder, 使用 ffmpeg/avconv的Paperclip 音频/视频转码器 Paperclip 转码器使用 ffmpeg/avconv的Paperclip 音频/视频转码器。这是( https://github.com/owahab/paperclip-ffmpeg )的替代品。状态
您的 Paperclip 模型将需要两个额外的二进制列: paperclip_encryption_key和paperclip_encryption_iv来存储加密机密。 class AddPaperclipEncryptionKeyAndPaperclipEncryptionIvToMyModel < A
Paperclip 是 Rails 框架的一个插件,用于扩展 ActiveRecord 以支持简单的文件附件的功能。 标签:Paperclip
回形针 回形针旨在用作ActiveRecord的简单文件附件库。 其目的是使设置尽可能简单,并尽可能将文件与其他属性一样对待。 这意味着它们不会保存到磁盘上的... Paperclip现在需要Ruby版本> = 2.0.0和Rails版本3.2,> =
gem 'paperclip_torrent', github: "fattymiller/paperclip_torrent" 在模型中,正常设置has_attached_files ,包括:torrentify处理器,如下所示: has_attached_file :attachment, { styles: { audio_128kbps_...
回形针水印描述这是一个简单的 Paperclip 处理器,用于在 Paperclip 的图像上应用水印。 水印将调整大小以适合基本图像。 很少有选项可用于指定位置和不透明度: watermark_distance_from_top : 以百分比指定从顶部...
回形针优化器不再维护PaperclipOptimizer 由于不推荐使用Paperclip,该宝石也已经达到使用寿命。 可以在以下位置找到Paperclip以及PaperclipOptimizer的保养好的货叉: PaperclipOptimizer是一个处理器,用于优化和...
大家对服务端应该都不陌生了,我就不多介绍了,主要是点击server.jre,需要用JAVA8 64位运行,然后稍等一会,会生成mod文件夹,运行配置同意elua协议就可以开服务器了
gem “paperclip-s3” 并运行bundle install 。 然后,您需要设置一些ENV变量。 您需要提供一个秘密键,访问键和存储桶。 可以为用户提供access_key_id的s3_credentials哈希选项和相反,使用secret_access_key 。 ...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
综合解决方案请查看我的paperclip_database分支,并将此解决方案集成到:。安装由于 PaperclipDatabaseAttachmentsResponder 覆盖了 paperclip_database 的内部 api,因此使用精确的'2.2.1'版本。 将这些行放入您的...
将administrate-field-paperclip clipclip和kt-paperclip paperclip添加到您的Gemfile中: gem 'administrate-field-paperclip' gem 'kt-paperclip' 安装: $ bundle install 用法 按照上的开始使用模型和迁移。...
gem ' paperclip ' 并运行 bundle install 创建 s3 这里 设置s3信息 从获取访问密钥和秘密密钥并将它们写好。 然后创建一个config/aws.yml文件 development: & default access_key_id: ' YOUR_ACCESS_KEY ' ...
DM-Paperclip是Thoughtbot的Paperclip插件的端口,可与DataMapper一起使用。 该插件与原始的面向ActiveRecord的回形针完全兼容。 您可以采用现有的ActiveRecord数据库并将其与DataMapper一起使用。 该模块还包括...
氦,这里是回形针PaperClip内容收录仓库,你可以在这里找到往期节目的相关内容。 使用 在线浏览 目前,我们有以下站点供您在线浏览本仓库的内容。 GitHub页面 该站点由GitHub Actions自动构建并部署在GitHub Pages...
Rails.root / app / models / user.rb-包含Mongoid :: Paperclip模块并调用提供的类方法class User include Mongoid :: Document include Mongoid :: Paperclip has_mongoid_attached_file :avatarend就是这样那...
【Paperclip 开源项目详解】 Paperclip 是一个开源的实用工具,它的主要功能是监控和解析用户的剪贴板内容,以便快速处理其中包含的信息。在日常工作中,我们常常需要频繁地复制粘贴各种数据,如文本、链接、图片等...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...