首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用ActiveStorage上传到云端之前压缩图像

如何在使用ActiveStorage上传到云端之前压缩图像
EN

Stack Overflow用户
提问于 2018-06-13 18:45:30
回答 1查看 3.7K关注 0票数 6

为了节省云中的空间,您将如何使用activestorage对图像预上传进行调整和压缩?

EN

回答 1

Stack Overflow用户

发布于 2018-06-14 14:23:16

我在本地存储的开发中测试了下面的代码,它可以工作,但是无论如何,我会给出一些问题,我将在下面解释。

在创建时,这似乎很好,即使我认为应该有一个更干净的方法来做到这一点。

代码语言:javascript
复制
class User < ApplicationRecord
  has_one_attached :avatar

  before_save :resize_avatar_image

  def resize_avatar_image
    filename = avatar.filename.to_s
    puts attachment_path = "#{Dir.tmpdir}/#{avatar.filename}"
    File.open(attachment_path, 'wb') do |file|
       file.write(avatar.download)
       file.close
    end
    image = MiniMagick::Image.open(attachment_path)
    # if image.width ...
    image.resize "40x40"
    image.write attachment_path
    avatar.attach(io: File.open(attachment_path), filename: filename, content_type: "image/jpg")
  end

end

我遇到的问题有人可以克服

  1. 我无法在不下载到临时文件的情况下动态地应用变体,以便用MiniMagick处理它。
  2. 在更新(编辑)过程中,由于清除和purge_later方法的错误:[ActiveJob] [ActiveStorage::PurgeJob] [d6a930ee-32cd-45a7-bfb5-72929d79f9bb] Error performing ActiveStorage::PurgeJob (Job ID: d6a930ee-32cd-45a7-bfb5-72929d79f9bb) from Async(default) in 0.33ms: ArgumentError (wrong number of arguments (given 0, expected 1));我找不到解决办法。检查是否删除了旧的blob。
  3. 第2点的问题似乎与.attach方法有关;
  4. 我只测试了*.jpg*.png
  5. 未在生产中测试,也未用于远程存储
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50844197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档