gpt4 book ai didi

ruby-on-rails - 能够将图像上传到 Dropbox 但无法获取图像 url 并将其存储在数据库中

转载 作者:行者123 更新时间:2023-12-04 07:38:34 25 4
gpt4 key购买 nike

大家好,我正在使用 paperclip-dropbox gem >= 1.1.7

paperclip dropbox gem

然后这是我的属性:

  • 头像
  • avatar_file_name
  • 头像内容类型
  • avatar_file_size:
  • avatar_updated_at:

在我的表单中:
= f.file_field :头像

在我的模型中
has_attached_file:头像,
:存储=>:保管箱,
:dropbox_credentials => Rails.root.join("config/dropbox.yml"),
:dropbox_visibility => '公共(public)'

然后,当我添加图片时,我可以将图片上传到保管箱,然后这些属性有一个值 avatar_content_type、avatar_file_size、avatar_updated_at但它不能存储上传的图片 url。请帮忙谢谢!

附言。我使用的是非高级 Dropbox 帐户,我们在 Dropbox 的 Apps/my_images 文件夹中上传的图像。

最佳答案

你是对的。它没有存储上传的 avatar_url。因为在“应用程序文件夹”访问中,每当您调用 model_name.avatar.url 时,它每次都会调用 dropbox api,由此生成的链接仅在 4 小时内有效。所以你不能将这个生成的 url 存储到数据库中以供将来使用。在这里我将向您解释保管箱中的访问类型:

完整的 Dropbox 访问权限

文件将存储在公共(public)文件夹中。下载 URL 是可预测的,永远有效,并且不需要 API 调用来检索,但如果您不希望您的文件被轻松访问,这可能不是一件好事。当使用一个帐户为多个站点(例如临时和生产实例)存储数据时,您需要确保它们不会踩到彼此的脚趾。

请注意,2012 年 10 月 4 日之后创建的帐户默认情况下不会启用公共(public)文件夹:转到此处启用它。如果您收到文件夹已删除的消息,只需在根目录中创建一个名为 Public 的文件夹,它应该会获得特殊图标。

应用文件夹访问权限

文件将存储在应用程序下的子文件夹中(可在应用程序设置中配置)。下载 URL 是通过调用 Dropbox API 按需生成的,有效期仅为 4 小时。这意味着您的文件不太公开,您可以通过创建多个应用程序来隔离来自多个站点的数据。

在应用程序文件夹模式下,每次调用附件上的#url 都会导致对 Dropbox 的 HTTP 请求。这是否可以接受取决于您存储的内容以及您将其公开给用户的方式。

引用。来自 here.

如果您想使用 Dropbox 专业版,请使用此步骤将生成的 URL 存储到数据库中。

  • 将 avatar_url 的迁移添加到数据库中,然后执行 rake db:migrate。

然后在模型中添加这个回调,用于在数据库中存储 avatar_url。

after_commit :add_avatar_url_to_article, on: :create

private

def add_avatar_url_to_article
self.update_column(:avatar_url, self.avatar.url)
end

如果您需要任何其他信息,请告诉我。

关于ruby-on-rails - 能够将图像上传到 Dropbox 但无法获取图像 url 并将其存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24602470/

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