大家好我使用paperclip-dropbox gem> = 1.1.7
然后这是我的属性:
以我的形式:
= 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文件夹中上传的图片。
答案 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导入数据库。
然后在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
如果您还需要其他任何信息,请告诉我。