加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – amazon s3和bucketwave中的随机图像名称在数据库中不匹

发布时间:2020-12-17 03:15:08 所属栏目:百科 来源:网络整理
导读:我正在使用载波,轨道和亚马逊s3.每次保存图像时,图像都显示在s3中,我可以在管理控制台中看到它,其名称如下: https://s3.amazonaws.com/bucket-name/ 上传/图像/ 10 / 888fdcfdd6f0eeea_1351389576.png 但在模型中,名称是这样的: https://bucket-name.s3.am
我正在使用载波,轨道和亚马逊s3.每次保存图像时,图像都显示在s3中,我可以在管理控制台中看到它,其名称如下:

https://s3.amazonaws.com/bucket-name/
上传/图像/ 10 / 888fdcfdd6f0eeea_1351389576.png

但在模型中,名称是这样的:

https://bucket-name.s3.amazonaws.com/
上传/图像/ 10 / b3ca26c2baa3b857_1351389576.png

首先,为什么随机名称不同?我在上传器中生成它,如下所示:

def filename
  if original_filename
    "#{SecureRandom::hex(8)}_#{Time.now.to_i}#{File.extname(original_filename).downcase}"
  end
end

我知道每次调用都不会产生随机字符串,因为模型中的错误网址是一致的并保存.在图像名称保存并发送到amazon s3之后,在此过程的某个地方必须生成一个新的以保存在模型中.奇怪.

另外,如果不使用正则表达式,我可以将网址与s3 / bucket而不是bucket.s3匹配吗?在carrierwave中有选择吗?

解决方法

默认情况下,CarrierWave不存储URL.相反,它会在您每次需要时生成它.

因此,每次调用文件名时,由于Time.now.to_i,它将返回不同的值.

改为使用created_at列,或添加新列以存储随机ID或完整文件名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读