将文件传递到后端的回形针[rails]

时间:2011-10-06 02:13:02

标签: ruby-on-rails paperclip

我正在使用paperclip将多个文件附加到Entry对象

Class Asset < ActiveRecord::Base

    belongs_to :entry

    has_attached_file :asset, ...

当用户通过嵌套表单上传文件时,可以很好地工作。但是,我有某些情况,不是通过输入表格上传文件,而是由于闪存录音机。音频被记录并异步上传到我的/ tmp文件夹。所以我最终得到了我的服务器上的一些文件,这些文件还没有通过paperclip上传。

在这些情况下,我想把文件传递给回形针进行处理,好像它是由用户通过输入表单上传的。即我需要在控制器内以编程方式使用回形针。

你将如何完成这项工作?非常感谢!

1 个答案:

答案 0 :(得分:8)

通常,上传的文件作为File哈希中的params对象传递给您的控制器,然后构造函数通过attributes=将其传递给setter方法由Paperclip的has_attached_file创建 - 在您的模型案例Asset#asset=中(可能想稍微澄清一下这些名称)。

不,这不是你问题的答案,但它引导我们回答。知道您可能意识到您可以随时使用File作为参数调用该setter。 E.g:

class SomeController < ActionController::Base
  def some_action
    @some_asset = Asset.find 123 # (for example)

    file_path = '/tmp/path/to/your/file'
    file      = File.open(file_path, 'r')

    @some_asset.asset = file
    @some_asset.save
  end
end

希望这有用!