【问题标题】:Tempory file share临时文件共享
【发布时间】:2014-01-26 17:14:16
【问题描述】:

您好,我正在构建一个 ruby​​ on rails 应用程序。我只想共享一个附件最多一小时,之后必须停用该特定链接。 不做任何 CRON 工作 是否有可能实现这一目标?

我的要求是用户可以上传附件,他们可以共享加密的 URL。该 URL 的最长有效期为一小时。

我想知道是否可以不创建任何CRON 作业?如果是,请帮助我?

【问题讨论】:

  • 要么:为 URL 创建一个 id(有效的路径参数),并针对控制下载的任何模型存储超时。或者:在加密(或散列)数据中包含超时信息。您应该进一步解释(使用简化的代码)您当前如何提供下载,以获得最适合您的答案。
  • 感谢@NeilSlater,这是一个简单的载波文件上传,存储在我的本地应用程序文件夹中。我只是使用 bit.ly 加密该 url,这就是 [bit.ly/1ep4FzI] encrypted url。我的要求非常简单,我不想存储 url 或 CRON 作业来制作附件已停用。一旦用户上传文档,上述加密 URL 只需在该用户不应访问该 URL 下载文档后一小时内有效。

标签: ruby-on-rails ruby ruby-on-rails-3 download


【解决方案1】:

您可以使用应用程序控制器助手before_filter

class ApplicationController < ActionController::Base
  before_filter :check_expire

  def check_expire
    UrlLink.active.where('expire_time <= ?' Time.now).find_each do |url|
      url.deactive!
    end if UrlLink.active.any?
  end
end

型号

class UrlLink < AB
  scope :active, -> { where(active: true) }

  def deactive!
    update(active: false)
  end
end

但是如果你有很大的数据库,这个工作会很慢。

【讨论】:

  • 感谢@Monk_Code。它是一个文件路径。它将作为附件来自公用文件夹的服务器。我可以为此添加 before_filter 吗?
猜你喜欢
  • 2021-11-17
  • 2019-11-13
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
相关资源
最近更新 更多