能够将图像上传到Dropbox但无法获取并将图像URL存储在数据库中

时间:2014-07-07 02:57:03

标签: ruby-on-rails paperclip dropbox dropbox-api

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

paperclip dropbox gem

然后这是我的属性:

  • 化身
  • avatar_file_name
  • avatar_content_type
  • avatar_file_size:
  • avatar_updated_at:

以我的形式: = f.file_field :avatar

,在我的模特中 has_attached_file :avatar, :storage => :dropbox, :dropbox_credentials => Rails.root.join("config/dropbox.yml"), :dropbox_visibility => 'public'

然后当我添加图像时,我可以将图像上传到Dropbox和 这些属性具有值avatar_content_type,avatar_file_size,avatar_updated_at 但它无法存储上传的图片网址。请帮助谢谢!

PS。我使用非高级Dropbox帐户以及我们在Dropbox的Apps / my_images文件夹中上传的图片。

1 个答案:

答案 0 :(得分:1)

你是对的。它没有存储上传的avatar_url。因为在“app folder”访问时,无论何时调用 model_name.avatar.url ,它都会每次调用dropbox api,并且从此生成的链接仅在4小时内有效。所以你不能将这个生成的url存储到数据库中以及将来使用。在这里,我将向您解释dropbox中的访问类型:

完整Dropbox访问

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

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

应用程序文件夹访问

文件将存储在Apps下的子文件夹中(可在应用程序设置中配置)。下载URL是通过调用Dropbox API按需生成的,并且仅在4小时内有效。这意味着您的文件略逊一筹,您可以通过创建多个应用来隔离多个站点的数据。

在应用程序文件夹模式下,对附件的每次#url调用都会向Dropbox发出HTTP请求。这是否可接受将取决于您存储的内容以及如何将其暴露给用户。

参考。来自here.

如果您想使用dropbox pro版本,请使用此步骤将商店生成的url导入数据库。

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

然后在db。中存储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

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