我需要为多部分上传生成边界
post << "--#{BOUNDARY}\r\n"
post << "Content-Disposition: form-data; name=\"datafile\"; filename=\"#{filename}\"\r\n"
post << "Content-Type: text/plain\r\n"
post << "\r\n"
post << file
post << "\r\n--#{BOUNDARY}--\r\n"
BOUNDARY必须是随机字符串(文件中不存在)。
在rails中,我可以做SecureRandom.hex(10)
如果不加载activesupport,我可以执行哪些操作?
答案 0 :(得分:5)
如果您需要随机字母数字字符串,请使用以下内容:
rand(10000000000000).floor.to_s(36)
这将产生一个随机数(更改乘数以使字符串更长)并以基数36(10个数字+ 26个字母)表示。
对于Base64字符串,您可以执行类似
的操作require 'base64'
Base64.encode64(rand(10000000000000).to_s).chomp("=\n")
如果您需要固定长度的字符串,请使用您提供的随机数范围,使用1000000 + rand(10000000)。
答案 1 :(得分:0)
上次我在rand上使用MD5是这样的:
require 'md5'
random_string = MD5.md5(rand(1234567).to_s).to_s
答案 2 :(得分:0)
如果你想要随机的字母数字字符串,你可以这样做
o = [('a'..'z'),('A'..'Z'),('0'..'9')].map{|i| i.to_a}.flatten
string = (0...50).map{ o[rand(o.length)] }.join
这也会生成一个字母数字随机字符串
rand(36**length).to_s(36)
您还可以传递“长度”以生成随机字符串的大小。例8或10