【问题标题】:Unknown format error for image/png when getting url for blob获取 blob 的 url 时图像/png 的未知格式错误
【发布时间】:2019-12-09 17:44:06
【问题描述】:

我收到此错误:

ActionController::UnknownFormat (ErrorPagesController#not_found is missing a template for this request format and variant.

request.formats: ["image/png"]
request.variant: []):

当我尝试访问 blob 的 url 时。 我已将图像文件 (.png) 上传到活动存储,我可以在我的数据库和本地文件系统中看到它。 'product.image.attached?'返回真。但是,当我尝试访问它(显示在我的页面上)时,我收到了上述错误。

我试过了:

= image_tag url_for(product.pic)
= image_tag url_for(Rails.application.routes.url_helpers.rails_blob_path(product.image, only_path: true))
= image_tag url_for(product.image.service_url)
= link_to 'download', rails_blob_path(product.image, disposition: "attachment")

def pic_url
  if self.pic.attached?
    # Rails.application.routes.url_helpers.rails_blob_url(self.image, only_path: true)
    ActiveStorage::Current.set(host: "localhost:3000") do
      self.pic.service_url
    end
  end
end

我得到了网址:http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDRG9JYTJWNVNTSWRiWGQ2VUhGWWVEZExaVFZ3VTFGeWVrZFRZVUpFUWtaeUJqb0dSVlE2RUdScGMzQnZjMmwwYVc5dVNTSmJhVzVzYVc1bE95Qm1hV3hsYm1GdFpUMGljM05qWDJ4dloyOWZkMmhwZEdWZmMyMWhiR3d1Y0c1bklqc2dabWxzWlc1aGJXVXFQVlZVUmkwNEp5ZHpjMk5mYkc5bmIxOTNhR2wwWlY5emJXRnNiQzV3Ym1jR093WkdPaEZqYjI1MFpXNTBYM1I1Y0dWSklnNXBiV0ZuWlM5d2JtY0dPd1pVIiwiZXhwIjoiMjAxOS0wOC0wMVQwNzoxMjo1NC41NDRaIiwicHVyIjoiYmxvYl9rZXkifX0=--59b28fbf1b78f8d0e408040deb9f538473b6fd6f/ssc_logo_white_small.png?content_type=image%2Fpng&disposition=inline%3B+filename%3D%22ssc_logo_white_small.png%22%3B+filename%2A%3DUTF-8%27%27ssc_logo_white_small.png

这会导致错误。

如果有什么我遗漏的,请告诉我。谢谢

编辑: 我在我的日志中得到了这个:

Disk Storage (372.6ms) Generated URL for file at key: mwzPqXx7Ke5pSQrzGSaBDBFr (http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDRG9JYTJWNVNTSWRiWGQ2VUhGWWVEZExaVFZ3VTFGeWVrZFRZVUpFUWtaeUJqb0dSVlE2RUdScGMzQnZjMmwwYVc5dVNTSmJhVzVzYVc1bE95Qm1hV3hsYm1GdFpUMGljM05qWDJ4dloyOWZkMmhwZEdWZmMyMWhiR3d1Y0c1bklqc2dabWxzWlc1aGJXVXFQVlZVUmkwNEp5ZHpjMk5mYkc5bmIxOTNhR2wwWlY5emJXRnNiQzV3Ym1jR093WkdPaEZqYjI1MFpXNTBYM1I1Y0dWSklnNXBiV0ZuWlM5d2JtY0dPd1pVIiwiZXhwIjoiMjAxOS0wOC0wMVQwNzozNjozMi44NjFaIiwicHVyIjoiYmxvYl9rZXkifX0=--566d40e954f9f1103d1d515999cee2ff5ed745de/ssc_logo_white_small.png?content_type=image%2Fpng&disposition=inline%3B+filename%3D%22ssc_logo_white_small.png%22%3B+filename%2A%3DUTF-8%27%27ssc_logo_white_small.png)

再往下:

Started GET "/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDRG9JYTJWNVNTSWRiWGQ2VUhGWWVEZExaVFZ3VTFGeWVrZFRZVUpFUWtaeUJqb0dSVlE2RUdScGMzQnZjMmwwYVc5dVNTSmJhVzVzYVc1bE95Qm1hV3hsYm1GdFpUMGljM05qWDJ4dloyOWZkMmhwZEdWZmMyMWhiR3d1Y0c1bklqc2dabWxzWlc1aGJXVXFQVlZVUmkwNEp5ZHpjMk5mYkc5bmIxOTNhR2wwWlY5emJXRnNiQzV3Ym1jR093WkdPaEZqYjI1MFpXNTBYM1I1Y0dWSklnNXBiV0ZuWlM5d2JtY0dPd1pVIiwiZXhwIjoiMjAxOS0wOC0wMVQwNzozNjozMi44NjFaIiwicHVyIjoiYmxvYl9rZXkifX0=--566d40e954f9f1103d1d515999cee2ff5ed745de/ssc_logo_white_small.png?content_type=image%2Fpng&disposition=inline%3B+filename%3D%22ssc_logo_white_small.png%22%3B+filename%2A%3DUTF-8%27%27ssc_logo_white_small.png" for ::1 at 2019-08-01 17:31:36 +1000
Processing by ErrorPagesController#not_found as PNG
  Parameters: {"content_type"=>"image/png", "disposition"=>"inline; filename=\"ssc_logo_white_small.png\"; filename*=UTF-8''ssc_logo_white_small.png", "a"=>"rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDRG9JYTJWNVNTSWRiWGQ2VUhGWWVEZExaVFZ3VTFGeWVrZFRZVUpFUWtaeUJqb0dSVlE2RUdScGMzQnZjMmwwYVc5dVNTSmJhVzVzYVc1bE95Qm1hV3hsYm1GdFpUMGljM05qWDJ4dloyOWZkMmhwZEdWZmMyMWhiR3d1Y0c1bklqc2dabWxzWlc1aGJXVXFQVlZVUmkwNEp5ZHpjMk5mYkc5bmIxOTNhR2wwWlY5emJXRnNiQzV3Ym1jR093WkdPaEZqYjI1MFpXNTBYM1I1Y0dWSklnNXBiV0ZuWlM5d2JtY0dPd1pVIiwiZXhwIjoiMjAxOS0wOC0wMVQwNzozNjozMi44NjFaIiwicHVyIjoiYmxvYl9rZXkifX0=--566d40e954f9f1103d1d515999cee2ff5ed745de/ssc_logo_white_small"}

【问题讨论】:

  • this question 对您有帮助吗?
  • 不,我已经尝试过 service_url,但我得到一个不同的错误:缺少要链接的主机!请提供 :host 参数,设置 default_url_options[:host],或设置 :only_path 为 true):

标签: ruby-on-rails rails-activestorage ruby-on-rails-5.2


【解决方案1】:

感谢this answer,我已经解决了。我只需要将 routes.rb 底部的一行更改为:

get '*path', to: redirect('/'), constraints: lambda { |req|
  req.path.exclude? 'rails/active_storage'
}

或者在我的情况下是

get '*a', to: redirect('/'), constraints: lambda { |req|
  req.path.exclude? 'rails/active_storage'
}

【讨论】:

    猜你喜欢
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 2021-04-02
    • 2020-09-01
    • 1970-01-01
    • 2019-11-12
    相关资源
    最近更新 更多