我有这个Sinatra :: Base代码:
class Crush < Sinatra::Base
post '/upload' do
erb params.inspect
end
end
我正在使用Postman及其界面上传文件。所以我发送一个POST请求form-data
,请求正文中的名称为hello
,值为文件test.txt
,其中只包含一个简单的字符串hey there
当我params.inspect
时,我得到这个长字符串
{“------ WebKitFormBoundaryocOEEr26iZGSe75n \ r \ nConContent-Disposition:form-data; name”=&gt;“\”hello \“; filename = \”test.txt \“\ r \ nConContent-Type :text / plain \ r \ n \ r \ nhey那里\ r \ n ------ WebKitFormBoundaryocOEEr26iZGSe75n - \ r \ n“}
所以基本上只需要一个单键和一个单值。阅读大多数Sinatra教程(从表单中接受文件),Sinatra使用params[:file]
处理这个问题的方法很好,但是当文件直接来自一个文件时,情况似乎并非如此。 HTTP请求。
我尝试了一种非模块化的方法,而不是Sinatra::Base
,认为这是一些解析中间件缺失,但得到的结果相同。
这里有什么我想念的吗?我必须去制作我自己的自定义解析器来获取这个长哈希的内容吗?或者有更简单的方法吗?
答案 0 :(得分:2)
我认为这是邮差问题。当我在Postman中从'x-www-form-urlencoded'切换到'form-data'时,在Header部分中,字段:Content-Type => application/x-www-form-urlencoded
未被删除。因此,对于遇到此问题的人,请确保手动将其删除。