如何从Rails API返回图像?

问题描述 投票:0回答:1

所以我有一个与图像具有has_one_attached关系的模型,称为样本。

meal.rb:

    include Rails.application.routes.url_helpers
    has_one_attached :sample

    def get_sample_url
        url_for(self.sample)
    end 

所以我使用上面的get_sample_url来获取图像。它一直在返回路径,我只是假设它正在工作,并且已经使用相似的代码并获得了相似的链接构建了我的整个API。但是,当我将链接放入浏览器时,它不会返回任何内容。

返回的链接是http://local_host:3001/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--c83eba36bfec0607652b47d857104d3cf9e88009/cute%20owl.jpg

我想知道:从Rails API返回图像的理想方法是吗?为什么链接没有返回我的图像?如果我正在使用像Cloudinary这样的CDN来存储我的数据,这种方法行得通吗?

ruby-on-rails rails-activestorage
1个回答
0
投票

从Rails API返回图像的理想方法是什么?

取决于。

如果我们谈论的是JSON,则实际上它没有二进制类型,因此,要在JSON响应本身中包含图片,您需要对它进行base64编码。由于这会极大地增加文件的大小,因此您只需要考虑条形码或QR码等简单图像。

对于大多数“普通”图像,例如用户头像等,您只想在json中包含一个URL,客户端就可以在需要/需要图像时请求该URL。

如果您的应用范围很小,则可以使用file system storage。但是Rails不会使您的本地主机可用于整个Internet。

但是,如果您想扩展应用程序,请使用快速且分布式的云CDN。如果您想花时间做其他事情然后进行设置,我会考虑使用带有existing adapter而不是Cloudinary的CDN。

© www.soinside.com 2019 - 2024. All rights reserved.