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

ruby-on-rails – 在Amazon S3 carrierwave上重新上载映像

发布时间:2020-12-17 01:57:06 所属栏目:百科 来源:网络整理
导读:我有图像上传到亚马逊s3桶.当我尝试重新创建_versions!时,它给了我一个零身体异常. 我认为这是由于我们代码中以前的上传器设置发生了变化.但是,当我做pr.image.url时,它仍然给我原始图像,所以我尝试的是下面: begin User.all.each do |pr| if pr.user.pres
我有图像上传到亚马逊s3桶.当我尝试重新创建_versions!时,它给了我一个零身体异常.

我认为这是由于我们代码中以前的上传器设置发生了变化.但是,当我做pr.image.url时,它仍然给我原始图像,所以我尝试的是下面:

begin 
    User.all.each do |pr|
        if pr.user.present?
           pr.remote_avatar_url = pr.avatar.url
           pr.save!
        end
    end
    rescue
end

但它抛出一个错误:

ActiveRecord::RecordInvalid: Validation failed: Avatar trying to
download a file which is not served over HTTP

我知道的是carrierwave异常.我想要做的是,我想重新上传所有图像(因为pr.avatar.url给我原始图像),但我不知道该怎么做.任何帮助将不胜感激.

解决方法

您尝试将远程URL存储在名为remote_avatar_url的属性中是 correct.

CarrierWave抛出验证失败:尝试在尝试将无效URL保存到模型时尝试下载未通过HTTP异常提供的文件.更具体地说,当下载的文件“scheme”属性与regex / ^ https /(意味着URL不以“https”开头)匹配时,CarrierWave :: Uploader :: Download会引发CarrierWave :: DownloadError.您可以查看此逻辑here.(特别是,请参阅第31和69行.)

我不确定这是否是问题,但您可以尝试检查pr.avatar.url以查看它是否以https前缀开头,然后再将其分配给remote_avatar_url.

我希望这至少有点帮助.

(编辑:李大同)

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

    推荐文章
      热点阅读