2011-10-06 79 views
2

我使用纸夹将多个文件附加到一个条目对象通文件回形针上后端[轨]

Class Asset < ActiveRecord::Base 

    belongs_to :entry 

    has_attached_file :asset, ... 

奇妙的作品时用户经由嵌套形式上传文件。但是,在某些情况下,文件不是通过输入表单上载,而是通过闪存录音机上传的。录制音频并将其异步上传到我的/ tmp文件夹。所以最后我的服务器上有一些文件没有通过回形针上传。

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

你将如何去完成这个?非常感谢!

回答

7

通常上传的文件传递给你的控制器作为File对象在params哈希,然后由构造递,由attributes=方式,由回形针的has_attached_file --in模型的情况下Asset#asset=创建的setter方法(可能想澄清这些名字)。

不,这不是您的问题的答案,但它会引导我们回答问题。知道您可能会意识到,您可以随时以File作为参数调用该设置器。例如:

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 

希望有帮助!

+0

男人,你钉了它。岩石上。 – istan

+0

我如何发送File.open()的绝对路径,使用angularjs,因为我无法获得路径,因为chrome为了安全原因通过浏览器给我fakepath,itz块....任何帮助 – Orange