문제

사용자가 만든 파일 첨부 파일이 포함 된 전자 메일을 보내려고합니다.

attachments[document.display_name] =  File.read(document.public_filename)
.

이는 대부분의 조건에서 작동합니다 (.docx는 .docx를 포함하지만 오류가있는 .xlsx 파일에 실패합니다.

invalid byte sequence in UTF-8
.

attachment_fu를 사용하여 첨부 파일을 업로드하고 이메일을 보내는 데 delayed_job을 연기하지만 첨부하려는 파일은 괜찮아 보이고 응용 프로그램 밖에서 성공적으로 열 수 있습니다.

나는 또한 다음과 같이 코드를 변경하는 제안을 보았지만 도움이되는 것 같습니다. 추가로 포함하십시오.

    attachments[document.display_name] =  { :content => File.read(document.public_filename), :transfer_encoding => :binary }
.

모든 첨부 파일 유형에 코드를 어떻게 작동합니까?

도움이 되었습니까?

해결책

모드 또는 인코딩을 지정하여 파일을 바이너리로 읽을 수 있습니다.

attachments[document.display_name] =  File.read(document.public_filename, :mode => 'rb')
.

또는

attachments[document.display_name] =  File.read(document.public_filename, :encoding => 'BINARY')
.

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