문제

레코드를 위해, 저는 레거시 코드를 작업하고 있으며 모든 것을 깨지 않고 새로운 기능을 연결하려고합니다. 지금은 서버에 다음과 같은 파일이 많이 있습니다.

 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  

당신은 통과해야합니다 PaperclipFile 물체:

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 레거시 문서 디렉토리에 매핑되었지만 심지어 페이퍼 클립이 기대하는 디렉토리 구조에 이러한 파일을 동시에 동시에 표시해야한다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top