我怎样才能正确处理这个发布的文本文件?

How can I correctly handle this POSTed text file?

我在处理 ruby 中发布的文件时遇到了最困难的时间,并且正在使用邮递员发送请求。请求的 headers 是:

Content-Type multipart/form-data

body 看起来像:

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 的输出?

我相信您可以使用 params[:file][:filename] 访问文件名,并通过 params[:file][:tempfile] 访问 TempFile。 TempFile 将允许您对其进行操作,就好像它实际上是一个 File 对象一样,因此您可以通过 read 方法(例如 params[:file][:tempfile].read)访问内容。

您的调用 request.body 已经是一个字符串,但它是请求的正文,而不是文件附件本身。附件作为参数传递,在收到请求时将保存为临时文件。

post '/' do
 request.body.rewind
 file_attachment_contents = request.params[:file][:tempfile].read
 puts file_attachment_contents
end