【发布时间】:2017-03-05 17:35:42
【问题描述】:
我有这个 Sinatra::Base 代码:
class Crush < Sinatra::Base
post '/upload' do
erb params.inspect
end
end
我正在使用 Postman 及其界面来上传文件。所以我发送一个带有form-data的POST请求,在请求的主体中,名称是hello,值是一个文件test.txt,它只包含一个简单的字符串hey there。
当我执行params.inspect 时,我得到了这个长字符串
{"-----WebKitFormBoundaryocOEEr26iZGSe75n\r\nContent-Disposition: form-data; name"=>"\"hello\"; filename=\"test.txt\"\r\nContent-Type: text/plain\r\n\r\n嘿那里\r\n------WebKitFormBoundaryocOEEr26iZGSe75n--\r\n"}
所以基本上一个长的有一个键和一个值。阅读大多数 Sinatra 教程(从表单中接受文件),Sinatra 使用params[:file] 处理这个问题的好方法,但是当文件直接来自 HTTP 请求的主体时,情况似乎并非如此.
我也尝试了非模块化方法,没有Sinatra::Base,认为它缺少一些解析中间件,但得到了相同的结果。
这里有什么我遗漏的吗?我必须去制作自己的自定义解析器来获取这个长哈希的内容吗?还是有更简单的方法?
【问题讨论】: