如何从 Rails Active Storage 中的 url 附加图像
Posted
技术标签:
【中文标题】如何从 Rails Active Storage 中的 url 附加图像【英文标题】:How to attach image from the url in Rails Active Storage 【发布时间】:2020-09-03 07:06:39 【问题描述】:我想将图像附加到 rake 任务中的记录。我唯一的图像是 URL。这是图片的 URL https://cdn.iconscout.com/icon/free/png-256/google-analytics-7-722699.png。
我在 *** answer 中使用了这种方法。
require 'open-uri'
downloaded_file = open(tool.image)
new_tool.image.attach(io: downloaded_file, filename: "foo.png")
这会产生以下错误。
ActiveStorage::IntegrityError: Unsupported source URL: #<StringIO:0x00007f9bd9759f28>
Caused by:
CloudinaryException: Unsupported source URL: #<StringIO:0x00007f9bd9759f28>
有人可以帮我吗?
【问题讨论】:
【参考方案1】:在这种情况下,我认为您应该将包含图像 URL 的字符串传递给open
:
require 'open-uri'
image_url = "https://cdn.iconscout.com/icon/free/png-256/google-analytics-7-722699.png"
downloaded_file = open(image_url)
new_tool.image.attach(io: downloaded_file, filename: "foo.png")
【讨论】:
感谢您的回复。在我的问题中,tool.image 是图像的 URL。 @SalmanHaseebSheikh 您使用的是什么版本的 Ruby 和 Rails? Ruby 2.7.0 和 Rails 6.0.2。 你确定tool.image
返回一个字符串吗?你能把tool.image.class
的输出放在这里吗?
最新版本的 ruby 建议使用 URI.open
代替:警告:不推荐通过 Kernel#open 调用 URI.open,直接调用 URI.open 或使用 URI#open以上是关于如何从 Rails Active Storage 中的 url 附加图像的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails - Active Storage - 如何只接受 pdf 和 doc?
如何使用 Active Storage Rails 上传到具有 AES256 加密(服务器端加密)的 AWS S3 存储桶?
无法使用 sequel-rails gem 安装 rails active_storage
无法加载 Rails.config.active_storage.service