레일에서 양식 도우미를 사용하여 업로드하는 기본 파일 (예 : 레일스 4.0.0.rc1 및 1.9.3p362)을 사용하여 edge rails guide을 사용하여 머리말을 붙이려 고합니다. 내가 Paperclip이나 CarrierWave에 들어가기 전에.양식 헬퍼를 사용하여 레일에 기본 파일 업로드
내 #create로 업로드 할 수있는 방법을 컨트롤러에 넣었습니다. 내 업로드 파일 이름이 저장된 이미지 열과 함께 새 레코드를 만드는 것이 계획되었습니다.
내 # 만들기이있다 : 나는 정확히 파일 업로드가 발생 레일 가이드를 따르
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'w') do |file|
file.write(uploaded_io.read)
end
, 내 public/uploads
에서 파일을 볼 수 있지만 브라우저에서 인코딩 오류가 발생합니다 :
Encoding::UndefinedConversionError
"\x89" from ASCII-8BIT to UTF-8
\ x89는 파일 이름의 접미사에있는 점입니다. 즉 : .png
'b'를 File.open에 추가한다고하는 StackOverflow 게시물을 발견했습니다.이 게시물은 인코딩 오류를 수정하지만 다른 오류가 발생합니다. 이 StackOverflow post 내 오류를 다루고 있지만 솔루션을 따르고 여전히 오류가 있다고 생각합니다.
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
file.write(uploaded_io.read)
end
다음과 같은 TypeError가 발생하지만 인코딩 오류는 발생하지 않습니다. 반면에 파일은 업로드됩니다.
TypeError: can't cast ActionDispatch::Http::UploadedFile to string:
내가 잘못하고있는 것에 대한 제안 사항이 있으십니까? 내가 클립을 이동하거나 CW 전에이 작품을보고 좋은 것
내가 업로드에 대한 열:image
를 사용했지만, 업로드시
:image
이
:string
아니라는 것을 알아 냈
내가 carrierwave를 사용하여 동일한 오류를 데에 약간 흐릿한입니다. 이견있는 사람? – ctilley79
아직 carrierwave를 체크 아웃하지 않았습니다. 죄송합니다. – kaplan
나는 훨씬 더 레일 4 인 클립 클립을 사용하여 끝내었다. – ctilley79