Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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_Rails Activestorage - Fatal编程技术网

Ruby on rails Rails api活动存储

Ruby on rails Rails api活动存储,ruby-on-rails,rails-activestorage,Ruby On Rails,Rails Activestorage,是否有一种方法可以在上传时创建图像的变体,并存储变体而不是整个图像 比如说。用户上传的图片是1000x1000,当我在rails中收到上传时,我想创建3个变体,一个100x100,一个300x300和一个600x600,并将它们存储在S3中,然后通过执行类似于post.image.缩略图的操作来检索它们 每次请求图像时,我都必须从s3中检索完整大小的图像,并对其进行动态处理以将其提供给用户,这似乎很愚蠢。我想您正在寻找Minimagik 将此添加到您的文件中 gem 'mini_magick'

是否有一种方法可以在上传时创建图像的变体,并存储变体而不是整个图像

比如说。用户上传的图片是1000x1000,当我在rails中收到上传时,我想创建3个变体,一个100x100,一个300x300和一个600x600,并将它们存储在S3中,然后通过执行类似于
post.image.缩略图的操作来检索它们


每次请求图像时,我都必须从s3中检索完整大小的图像,并对其进行动态处理以将其提供给用户,这似乎很愚蠢。

我想您正在寻找Minimagik

将此添加到您的文件中

gem 'mini_magick'
然后你可以使用minimagick方法来变换图像

<%= image_tag user.avatar.variant(resize: "100x100") %>


Im使用minimagic,但它仍会上载原始文件,然后在请求时对其进行处理以调整大小。我想在将其存储到S3之前调整其大小。所以我可以上传一个图像,然后在s3中存储一个100x100的拇指和一个600x600的图像。所以我不必每次都处理它,你也不必每次都处理它。如果我没有错的话,第一次你要求它时,它会创建文件,第二次,它只是要求之前创建的文件。但是文件不会过期吗?或者只是过期的url?只是url,您需要在之前调用processed来创建变体并上传到服务,然后当您按上述方式调用它时,它只会请求url。请阅读此处的变体文档,以便更清楚地了解它。伙计,你帮了我很大的忙。非常感谢你!