通过API调用上传文件

时间:2014-07-22 19:59:32

标签: php ruby-on-rails ruby

我正在拜访那些在Ruby和PHP方面都是双语的人。我正在使用API​​调用来下订单。大多数参数都是字符串。然而, API调用还允许文件参数(在API文档中称为“FILE”)上载pdf或word文档。我可以简单地使用File.open(...)作为调用的参数值吗?我在API文档中没有看到任何关于多部分表单的内容。在下面的例子中,“@ packingslip.doc”的Ruby等价物是什么?

从API文档中,以下是文件参数的说明:

名称:packingslip, 描述:包装单, 格式:文件 - (仅允许Pdf,docx和doc文件)

来自PHP中的API示例:(为清晰起见,省略了大多数参数)

$postfields["packingslip"] = “@packingslip.doc”;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$data = curl_exec($ch);
curl_close($ch);

我希望能够使用Net :: HTTP.post调用API(因为我没有使用file参数):

@result = Net::HTTP.post_form(uri, {key: key, 
                                      hash: hash,
                                      method: 'addorder',
                                      email: 'email@myemail.com',
                                      address: user.address,
                                      city: user.city
                                      file: ??? }).body

0 个答案:

没有答案