Ruby on rails 如何从Rails API返回图像?
我只是想澄清一下,为了开发测试的目的,我正试图通过localhost返回我在机器上使用活动存储器存储的图像。我没有尝试将图像从本地主机渲染到internet 所以我有一个模型,它有一个与图像相关的Ruby on rails 如何从Rails API返回图像?,ruby-on-rails,ruby-on-rails-5,rails-activestorage,Ruby On Rails,Ruby On Rails 5,Rails Activestorage,我只是想澄清一下,为了开发测试的目的,我正试图通过localhost返回我在机器上使用活动存储器存储的图像。我没有尝试将图像从本地主机渲染到internet 所以我有一个模型,它有一个与图像相关的,叫做sample 膳食.rb: include Rails.application.routes.url_helpers has_one_attached :sample def get_sample_url url_for(self.sample)
,叫做sample
膳食.rb:
include Rails.application.routes.url_helpers
has_one_attached :sample
def get_sample_url
url_for(self.sample)
end
因此,我使用上面的get\u sample\u url
,来获取图像。它一直在返回一个路径,我只是假设它正在工作,并使用类似的代码和获得类似的链接构建了我的整个API。但是当我把链接放到浏览器中时,它不会返回任何内容
返回的链接是http://localhost:3001/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--c83eba36bfec0607652b47d857104d3cf9e88009/cute%20owl.jpg
我想知道:
从Rails API返回图像的理想方法是什么?
为什么链接不返回我的图像 从Rails API返回图像的理想方式是什么?
视情况而定
如果我们谈论的是JSON,它实际上没有二进制类型,因此为了在JSON响应本身中包含图像,您需要对其进行base64编码。因为这会大大增加文件的大小,所以它只会对条形码或QR码等简单的图像进行考虑。
对于大多数“普通”图像,如用户头像等,您只需要在json中包含一个URL,客户机可以在需要图像时请求该URL
如果应用程序的范围很小,则可以使用。但是Rails不会让你的本地主机在整个互联网上都可用
但是,如果你想让你的应用程序扩展,请使用快速且分布式的云CDN。我会考虑使用一个CDN而不是云计算,如果你想花时间做其他事情,然后安装。< /P> <代码>本地主机:3001 < /代码>部分是问题。当通过internet作为localhost:
在那里不起作用时,这不会产生任何结果,它只是本地的。production
env的图像存储在哪里?对于production,我的图像是使用Cloudinary存储的。因此,您需要更新该方法以返回相应的url链接到那里的图像,以便工作。如果这是一个问题,请将其包装在If/else中,这样它也可以在本地工作,使用If Rails.env.production?
确定要使用哪个URL,这样我就无法获取存储在dev的activestorage中的图像了?您可以,但只能在本地,您不能通过internet访问它们。当您试图通过Internet访问它们时,必须使用它们在Cloudinary中的位置的URL。我只想在本地主机上获取它,现在,我知道如何在生产中处理它。