Ruby - 如何使用 Shrine 从 data_uri (base64) 设置衍生文件名
Ruby - How to set derivatives filename with Shrine from data_uri (base64)
根据这个问题:
这非常适合我的用例,但是,创建的派生文件都具有文件名“image_processing_xxx”。 URL 看起来不错,但是当您右键单击下载每个图像时,文件名看起来不正确或与 URL 不匹配。
是否可以重命名这些文件以匹配新的原始文件名 - 并在每个文件的末尾(.png/.jpeg 之前)包含自定义的“_2x”或“_mobile”?我可以在某个地方覆盖它吗?我已经尝试了很多插件,但到目前为止我还没有这样的运气。
如果有人想做同样的事情,我已经测试了这个工作方法:
add_metadata :filename do |io, record: nil, derivative: nil, **context|
# Get file extension
mime_type = context[:metadata]['mime_type']
extension = Shrine.infer_extension(mime_type)
# Set filename
if derivative
"#{derivative.to_s.dasherize}-photo-#{record.slug}" + extension.to_s
else
"original-photo-#{record.slug}" + extension.to_s
end
end
这给出了名为下载 URL 的派生词,以及原始文件的“原始”,两者都具有正确的文件扩展名。
根据这个问题:
这非常适合我的用例,但是,创建的派生文件都具有文件名“image_processing_xxx”。 URL 看起来不错,但是当您右键单击下载每个图像时,文件名看起来不正确或与 URL 不匹配。
是否可以重命名这些文件以匹配新的原始文件名 - 并在每个文件的末尾(.png/.jpeg 之前)包含自定义的“_2x”或“_mobile”?我可以在某个地方覆盖它吗?我已经尝试了很多插件,但到目前为止我还没有这样的运气。
如果有人想做同样的事情,我已经测试了这个工作方法:
add_metadata :filename do |io, record: nil, derivative: nil, **context|
# Get file extension
mime_type = context[:metadata]['mime_type']
extension = Shrine.infer_extension(mime_type)
# Set filename
if derivative
"#{derivative.to_s.dasherize}-photo-#{record.slug}" + extension.to_s
else
"original-photo-#{record.slug}" + extension.to_s
end
end
这给出了名为下载 URL 的派生词,以及原始文件的“原始”,两者都具有正确的文件扩展名。