1

我有一个 python 脚本,它通过 HTTP::PUT 将文件作为带有数据变量的附件发送(也可以是 POST)

使用 POST,我可以通过 PHP(在 Apache 上)使用一行代码(echo file_get_contents($_FILES['file']['tmp_name']);

但是尝试在没有 Apache 和 PHP(我不可用)的情况下对 ruby​​ 做同样的事情让我研究在 THIN 上运行的 Ruby 脚本。我设法创建了一个瘦脚本来侦听端口并以 200 OK 响应,但找不到任何示例或清楚地阅读 API 以了解如何捕获 PUT 或 POST 数据。任何代码片段或指针赞赏。

到目前为止我所拥有的:

require 'rack' 
process_requests = lambda { |env|
  response = []
  response << 200
  response << {"Content-Type" => "text/plain"}  
  body = ["Now What?"]  
  response << body
  return response
}

thin = Rack::Handler::Thin
thin.run process_requests

输出:

>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:8080, CTRL+C to stop

我如何测试它:

curl --upload-file /tmp/testfile http://localhost:8080

输出:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    31    0     9  100    22      8     21  0:00:01  0:00:01 --:--:--    21
Now What?

该文件显然已传输,但不知道如何获取它。

一旦我弄清楚如何检查和接收文件,我就可以处理响应头等。

谢谢你的帮助,

4

0 回答 0