Ruby 如何正确处理此已发布的文本文件?
我在处理一个用ruby发布的文件时遇到了最大的困难,我正在使用postman发送请求。请求的标题为: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
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版本之间的差异。最新的文档显示它使用了符号,但不同的版本可能使用了字符串。