이미 내 서버에있는 파일과 함께 PaplClip을 사용하는 방법은 무엇입니까?
-
05-07-2019 - |
문제
레코드를 위해, 저는 레거시 코드를 작업하고 있으며 모든 것을 깨지 않고 새로운 기능을 연결하려고합니다. 지금은 서버에 다음과 같은 파일이 많이 있습니다.
myapp/public/temp/myfile.doc
문제는 컨트롤러 동작에서 이러한 파일에서 문서 객체를 만들고 싶다는 것입니다.
다음은 다듬어 다운 Docfile 클래스입니다.
class DocFile < ActiveRecord::Base
has_attached_file :docs,
:path => "#{Constants::DOCFILES_PATH}:basename.:extension",
:url => "http://#{Constants::SITE_URL}/docs/:basename.:extension"
end
PaperClip에는 양식에서 업로드하지만 내 상황에서는 업로드하지 않으면 멋진 문서가 있습니다.
그렇다면 파일을 업로드하고 있다는 사실을 어떻게 "시뮬레이션"할 수 있습니까?
지금까지 나는 이것을 시도했다 :
temp_file_url = "correct_rails_root/myapp/public/temp/myfile.doc"
@docfile = DocFile.new :docs => temp_file
그러나 그것은 작동하지 않습니다.
모든 포인터는 감사 할 것입니다!
편집하다:
난 이걸했다:
temp_file_url = Constants::TEMPORARY_UPLOAD_PATH + "/" + params[:temp_file_upload][:doc]
temp_file = File.new(temp_file_url, "w+")
@docfile = DocFile.new :docs => File.open(temp_file_url)
여전히 작동하지 않습니다
해결책
나는 이것을해야했다 :
temp_file_name = #the filename
temp_file_path = Constants::TEMPORARY_UPLOAD_PATH + "/" + temp_file_name
temp_file = File.new(temp_file_path, "r")
@docfile = DocFile.new :docs => temp_file
파일을 "읽기"로 열지 않았다면 작동하지 않을 것입니다. 나에게는 거의 의미가 없지만 지금은 작동합니다!
다른 팁
나는 철도의 권위가 아니지만
@docfile = DocFile.new :docs => temp_file
그렇지 않아야합니다
@docfile = DocFile.new :docs => temp_file_url
당신은 통과해야합니다 Paperclip
ㅏ File
물체:
temp_file_path = 'correct_rails_root/myapp/public/temp/myfile.doc'
@docfile = DocFile.new :docs => File.open(temp_file_path)
마이그레이션 으로이 문제를 해결해야한다고 생각하며 기존 파일의 경우 Paprclip이 모델에 추가하는 열을 채워야합니다 (xxx_file_name
, xxx_content_type, xxx_file_size
). 당신은 언급하지 않았습니다 Constants::DOCFILES_PATH
레거시 문서 디렉토리에 매핑되었지만 심지어 페이퍼 클립이 기대하는 디렉토리 구조에 이러한 파일을 동시에 동시에 표시해야한다고 생각합니다.
제휴하지 않습니다 StackOverflow