Ruby 如何正确处理此已发布的文本文件?

Ruby 如何正确处理此已发布的文本文件?,ruby,rest,api,multipartform-data,Ruby,Rest,Api,Multipartform Data,我在处理一个用ruby发布的文件时遇到了最大的困难,我正在使用postman发送请求。请求的标题为: Content-Type multipart/form-data 身体看起来像: file crazyfile.txt 在我的Sinartra服务器中,我正在执行以下操作: post '/' do request.body.rewind contents = request.body.read.to_s puts contents end 输出如下所示: ---------49977

我在处理一个用ruby发布的文件时遇到了最大的困难,我正在使用postman发送请求。请求的标题为:

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

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

我相信您可以使用
params[:File][:filename]
访问文件名,并通过
params[:File][:TempFile]访问文件名
。TempFile将允许您对其进行操作,就像它实际上是一个文件对象一样,因此您可以通过
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

调用的
request.body
已是字符串,但它是请求的主体,而不是文件附件本身。附件作为参数传递,当收到请求时,该参数将保存为临时文件

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

我刚刚尝试了这个,并让它与params['file'][:filename]一起工作。为什么我需要带单引号的文件和带冒号的文件?这可能是Sinatra版本之间的差异。最新的文档显示它使用了符号,但不同的版本可能使用了字符串。我刚刚尝试了这个方法,并让它与params['file'][:filename]一起工作。为什么我需要带单引号的文件和带冒号的文件?这可能是Sinatra版本之间的差异。最新的文档显示它使用了符号,但不同的版本可能使用了字符串。