Как я могу правильно обработать этот текстовый файл POST? - PullRequest
0 голосов
/ 27 апреля 2018

У меня самое сложное время при обработке файла, отправленного в ruby, и я использую почтальон для отправки запроса. Заголовки запроса:

Content-Type multipart/form-data

Тело выглядит так:

file crazyfile.txt

На моем сервере Sinartra я делаю следующее:

post '/' do
 request.body.rewind
 contents = request.body.read.to_s
 puts contents
end

Вывод выглядит так:

---------499771616322077848081915
Content-Disposition: form-data; name="file"; filename="crazyfile.txt"
Content-Type: text/plain

holy moly
---------499771616322077848081915

Как мне получить вывод всего holy moly?.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Ваш вызов request.body, который уже является строкой, но является телом запроса, а не самим вложенным файлом. Вложение передается как параметр, который будет сохранен как временный файл при получении запроса.

post '/' do
 request.body.rewind
 file_attachment_contents = request.params[:file][:tempfile].read
 puts file_attachment_contents
end
0 голосов
/ 27 апреля 2018

Я полагаю, что вы можете получить доступ к имени файла с помощью params[:file][:filename] и получить доступ к TempFile через params[:file][:tempfile]. TempFile позволит вам работать с ним так, как если бы он был фактически объектом File, поэтому вы можете получить доступ к содержимому с помощью метода read (например, params[:file][:tempfile].read).

...