gpt4 book ai didi

ruby-on-rails - S3 上的 Rails + ActiveStorage : Set filename on download?

转载 作者:行者123 更新时间:2023-12-04 22:55:36 24 4
gpt4 key购买 nike

有没有办法在下载时更改/设置文件名?

示例:Jon Smith 上传了他的头像,文件名为 4321431-small.jpg .下载时,我想将文件重命名为 jon_smith__headshot.jpg .

看法:<%= url_for user.headshot_file %>
url_for从 Amazon S3 下载文件,但使用原始文件名。

我在这里有哪些选择?

最佳答案

内置 Controller 提供带有存储文件名的 blob。您可以实现一个自定义 Controller ,为它们提供不同的文件名:

class HeadshotsController < ApplicationController
before_action :set_user

def show
redirect_to @user.headshot.service_url(filename: filename)
end

private
def set_user
@user = User.find(params[:user_id])
end

def filename
ActiveStorage::Filename.new("#{user.name.parameterize(separator: "_")}__headshot#{user.headshot.filename.extension_with_delimiter}")
end
end

从 5.2.0 RC2 开始,您不需要传递 ActiveStorage::Filename ;您可以通过 String文件名代替。

关于ruby-on-rails - S3 上的 Rails + ActiveStorage : Set filename on download?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48672728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com