Приложение My Rails 3.1 делает вызов веб-службы для получения файла PDF, который затем мне нужно отправить в браузер для загрузки.Rails send_file/send_data - Невозможно прочитать файл - после вызова веб-службы
Ответ XML это что-то вроде этого:
<RenderResponse>
<Result>blahblah this is the file info<Result>
<Extension>PDF</Extension>
<MimeType>application/pdf</MimeType>
</RenderResponse>
Я затем пытается преобразовать «Результат» тег в файл, как так:
@report = @results[:render_response][:result]
@report_name = MyReport.pdf
File.open(@report_name, "w+") do |f|
f.puts @report
end
наконец я пытаюсь отправить на Браузер:
Это приводит к ошибке: «Не удается прочитать файл», и он выплевывает весь текст из тег результатов.
Если я использую send_data, как так:
send_data File.read(@report_name).force_encoding('BINARY'), :filename => @report_name, :type => "application/pdf; charset=utf-8", :disposition => "attachment"
загружаемый файл работает, но я получаю файл с 0KB и ошибки Adobe, который говорит файл «MyReport.pdf» не может быть открыт, потому что «его либо не поддерживаемый тип файла или он был поврежден ».
Как я могу получить информацию о файле ответа XML, создать файл и поток в браузере?
вы можете попробовать с этим 'File.open (файл, 'г') делать | F | send_data f.read.force_encoding ('BINARY'),: filename => filename,: type => "application/pdf",: disposition => "attachment" end' –
Спасибо за комментарий. Я пробовал это, и это не решило эту проблему. Я нашел решение и опубликую его. – user2967603