www.youtube.com/watch?v=KYUhtPV_Lk4
由于
答案 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