rails helper给上传文件一个唯一的名字?

时间:2010-12-20 18:34:44

标签: ruby-on-rails

嘿伙计们 我现在正在开发一个需要上传大量视频的项目,有这个帮助器的rails可以处理这个,比如youtube视频的地址:

  

www.youtube.com/watch?v=KYUhtPV_Lk4

由于

3 个答案:

答案 0 :(得分:3)

您可以生成这样的随机字符串并将其用作文件名:

Digest::SHA1.hexdigest(Time.now.to_s) # => 800b262b59296b660a4f73e23580809143ed8846 

答案 1 :(得分:1)

你使用activerecord来建模文件,还是仅仅是平面文件?

如果你有像UploadedFile这样的模型<< ActiveRecord :: Base为每个文件你可以使用模型的id,或者如果你想要一个字符串,你可以用一些字符串添加为salt来散列它。

irb(main):021:0> file_id = 1
=> 1
irb(main):022:0> Digest::SHA1.hexdigest('SomeRandomString' + file_id.to_s)
=> "70f5eedc8d4f02fd8f5d4e09ca8925c2f8d6b942"

如果您只是将它们保存为系统上的平面文件,则可以使用其路径+文件名哈希来创建唯一的字符串。

irb(main):016:0> Digest::SHA1.hexdigest '/home/bob/somefile.mp4'
=> "204a038eddff90637c529af7003e77d600428271"

并且您可以随时添加当前时间的时间戳和随机数以防止欺骗。

答案 2 :(得分:0)

  

SecureRandom.uuid生成v4随机UUID(通用唯一标识符)

     

它不包含有意义的

     

MAC地址,时间等信息   请参阅RFC 4122   UUID的详细信息。

SecureRandom::uuid