2011-10-06 4 views
2

클립을 사용하여 여러 파일을 항목 개체에 첨부하고 있습니다.파일을 백엔드의 클립으로 전달 [rails]

Class Asset < ActiveRecord::Base 

    belongs_to :entry 

    has_attached_file :asset, ... 

사용자가 중첩 된 양식을 통해 파일을 업로드 할 때 멋지게 작동합니다. 그러나 필자는 파일이 입력 폼이 아닌 플래시 오디오 레코더의 결과로 업로드되는 경우가 있습니다. 오디오는 내/tmp 폴더에 비동기 적으로 기록되고 업로드됩니다. 그래서 나는 클립으로 업로드되지 않은 내 서버의 일부 파일로 끝납니다.

이 경우 파일을 가져 와서 입력 양식을 통해 사용자가 업로드 한 것처럼 처리되도록 클립에 전달하고 싶습니다. 즉 컨트롤러에서 프로그래밍 방식으로 종이 클립을 사용해야합니다.

이것을 완성하는 방법에 대해 어떻게 생각하십니까? 많은 감사합니다!

답변

7

일반적으로 업로드 된 파일은 모델의 경우 Asset#asset= .. 이대로 종이 클립의 has_attached_file에 의해 생성 된 setter 메소드로, attributes=의 방법으로, 다음 생성자로 넘겨 된 params 해시에 File 객체로 컨트롤러에 전달 (그 이름을 조금 분명히하고 싶을 수도 있습니다).

아니요, 귀하의 질문에 대한 답변이 아니지만 답변으로 연결됩니다. 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

anglejs를 사용하여 File.open()에 절대 경로를 보내려면 어떻게해야합니까? 왜냐하면 크롬은 보안상의 이유로 브라우저에서 가짜 패스를 제공하기 때문에 경로를 얻을 수 없기 때문입니다. – Orange

관련 문제