Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从Rails API返回图像?_Ruby On Rails_Ruby On Rails 5_Rails Activestorage - Fatal编程技术网

Ruby on rails 如何从Rails API返回图像?

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)

我只是想澄清一下,为了开发测试的目的,我正试图通过localhost返回我在机器上使用活动存储器存储的图像。我没有尝试将图像从本地主机渲染到internet

所以我有一个模型,它有一个与图像相关的
,叫做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。我只想在本地主机上获取它,现在,我知道如何在生产中处理它。