gpt4 book ai didi

ruby-on-rails - 使用 Cloudinary 和 Active Storage 时如何设置将文件上传到特定文件夹?

转载 作者:行者123 更新时间:2023-12-05 08:49:13 26 4
gpt4 key购买 nike

我理解当使用以下语法直接上传到 Cloudinary 并将文件夹名称作为参数传递时,这会如何下降。

Cloudinary::Uploader.upload("sample.jpg", :use_filename => true, :folder => "folder1/folder2")

但是,我使用的是 ActiveStorage,当我以上述方式上传照片时,它没有附加到我的 Post 模型,也没有以任何方式与我的应用相关联。

我使用下面的代码来附加图片

post.send(:images).attach io: StringIO.new(new_data), filename: blob.filename.to_s, 
content_type: 'image'

它不接受指定文件夹的参数。我已尽力阅读 ActiveStorage 和 Cloudinary 文档,试图找到一种方法来完成这项工作,但是,我似乎无法弄明白。

我已经看到设置自定义文件夹 header 可能是让它工作的一种方式,但同样无法弄清楚如何为上面的代码设置自定义 header ,发生在下面的 job.

require 'tmpdir'
require 'fileutils'
require 'open-uri'
class ResizeImagesJob < ApplicationJob
queue_as :default

def perform(post)
post.images.each do |image|
blob = image.blob
blob.open do |temp_file|
path = temp_file.path
pipeline = ImageProcessing::MiniMagick.source(path)
.resize_to_limit(1200, 1200)
.call(destination: path)
new_data = File.binread(path)
post.send(:images).attach io: StringIO.new(new_data), filename: blob.filename.to_s,
content_type: 'image'
end
image.purge_later
end
end
end

上面的工作是等到帖子创建后,然后调整照片大小并将照片重新附加到帖子,同时删除原件。我正在采用这种方法来避免在上传后直接在 Cloudinary 上调整帖子大小时发生的完整性错误。

我想要做的是将调整大小后的照片存储在不同的文件夹中。这样做的原因是我使用的是 direct_upload 并且用户可以在不创建帖子的情况下上传照片。因此导致我存储未使用的照片。这将提供一种简单的方法来识别和处理此类图像。

最佳答案

基于Rails环境的文件夹名称

您可以在 storage.yml 上动态设置您的文件夹:

cloudinary:
service: Cloudinary
folder: <%= Rails.env %>

因此 Cloudinary 将根据您的 Rails 环境自动创建文件夹:

image

这是一个 long due issue Cloudinary 团队似乎已经解决了 Active Storage。感谢您的出色工作❤️

关于ruby-on-rails - 使用 Cloudinary 和 Active Storage 时如何设置将文件上传到特定文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64331311/

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