乐者为王

Do one thing, and do it well.

随机化Paperclip的上传文件名

有时我们希望可以设定上传文件名的格式。一是可以统一文件名,而不是一些乱七八糟的名字;二是可以让文件名不是那么容易被猜测出来。下面的这段代码就是在网上找到的:

1
2
3
4
5
6
7
8
9
10
11
class Photo < ActiveRecord::Base
  has_attached_file :image, :url => "/uploads/:basename.:extension"

  before_create :randomize_file_name

  private
  def randomize_file_name
    extension = File.extname(image_file_name).downcase
    self.image.instance_write(:file_name, "#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}")
  end
end

代码是从 http://trevorturk.com/2009/03/22/randomize-filename-in-paperclip/ 找到的,这里我把随机参数给改了,这样文件名的格式就类似20110310095632768这样。还有要注意的就是在:url中必须使用:basename参数,因为修改的:file_name就是它。

Comments