【问题标题】:Accept file upload (without a form) in Sinatra在 Sinatra 中接受文件上传(无表单)
【发布时间】: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,认为它缺少一些解析中间件,但得到了相同的结果。

这里有什么我遗漏的吗?我必须去制作自己的自定义解析器来获取这个长哈希的内容吗?还是有更简单的方法?

【问题讨论】:

    标签: ruby sinatra postman


    【解决方案1】:

    我认为这是邮递员的问题。当我在 Postman 中从 'x-www-form-urlencoded' 切换到 'form-data' 时,在 Header 部分中,字段:Content-Type =&gt; application/x-www-form-urlencoded 不会被删除。所以遇到这个问题的朋友,请务必手动删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 2011-03-06
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      相关资源
      最近更新 更多