【问题标题】:Rename an upload file on ruby on rails在 ruby​​ on rails 上重命名上传文件
【发布时间】:2021-12-24 19:46:12
【问题描述】:

我是 ruby​​ on rails 的新手,我想更改我上传的图像的名称 谢谢

      resized_image = MiniMagick::Image.read(picture.image.download)
      resized_image = resized_image.combine_options do |b|
        b.resize '2760>'
        b.quality '80'
      end
      v_filename = picture.image.filename
      v_content_type = picture.image.content_type
      picture.image.purge
      picture.image.attach(io: File.open(resized_image.path), filename: v_filename, content_type: v_content_type)
    end```

【问题讨论】:

  • 您尝试过更改v_filename = "new_name.jpeg"吗?
  • 是的,它可以工作,但如果我希望它是动态的,例如用下划线替换空格它将不起作用
  • 动态是什么意思?动态部分来自哪里,模型?
  • @elmd00 您可以简单地更改 v_filename 值,然后再将其传递给 picture.image.attach
  • @Chandan 如果我使用像 gsub 这样的方法,我会得到一个错误,比如“这不是一个公认的方法”

标签: ruby-on-rails ruby file-upload


【解决方案1】:

由于@elmd00 在评论中提到picture.image.filename 属于ActiveStorage::Filename 类,所以gsub 无法解决问题,我们需要先使用to_s 方法将其转换为字符串,然后我们可以使用gsub将空格( ) 替换为下划线(_)

v_filename = v_filename.to_s.gsub(" ", "_")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2010-11-25
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    相关资源
    最近更新 更多