所以我正在尝试使用一个名为Sky Biometry的 api ,用于面部检测和面部识别。该 api 接受 url 或 post 作为 MIME 类型。在这种情况下,我想直接将图片发布到 api,这是文档中的内容:
“注意:如果您想发布图像而不是指定 url,则对方法的请求必须形成为使用 POST 数据发送的 MIME 多部分消息。每个参数都应指定为单独的表单数据块。”
我已经尝试四处寻找示例,但还没有找到任何示例,如果有人可以帮助新手,将不胜感激。
这是使用 curl 发布值的示例结构,
$value1 = 'DATA 1;
$value2 = 'DATA 2';
$url = 'http://www.skybiometry.com/file/api/facedetection/example';
$fields = array(
'mimetype' => urlencode($value1),
'mimetype2' => urlencode($value2)
);
//url-ify the data for the POST
$fields_string = '';
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
希望这可以帮助你。
多部分消息实际上是标准的 POST enctype="multipart/form-data" 请求。您可以使用简单的表单非常简单地生成它们,或者您可以使用 cURL(我怀疑您已经这样做了),如下所示:
curl_setopt($channel, CURLOPT_POSTFIELDS, array("myfile" => "@/path/to/my/image.png"));
cURL 将自动完成其余的工作(转换您的内容类型并对其进行 mime-type )。