У меня есть базовая форма загрузки, которую я хотел бы эмулировать, используя cURL.
<?php
$params = array(
'api_key' => $api_key,
'api_secret' => $api_secret,
'urls' => null,
'uids' => 'all',
'detector' => 'Aggressive',
'namespace' => 'face.auth');
$action = $url . '?' . http_build_query($params);
?>
<form enctype="multipart/form-data" method="post" action="<?php echo $action; ?>">
<input type="file" name="upload" id="upload">
<input type="submit" />
</form>
Я знаю, как публиковать сообщения, используя cURL, но я не уверен, как публиковать данные изображения (эти данныехранится в виде двоичных данных в базе данных, назовем это $binary
).Передача $binary
, как показано ниже в качестве постполя, не работает.Я видел несколько примеров, которые помещают @
перед именем файла / путем к файлу и отправляют это как пост-поле.Тем не менее, это не работает для меня (так как я имею дело с двоичными данными, а не имя файла / путь).
$params = array(
'api_key' => $api_key,
'api_secret' => $api_secret,
'urls' => null,
'uids' => 'all',
'detector' => 'Aggressive',
'namespace' => 'face.auth',
$binary);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
var_dump($data);
?>
Я также пытался:
$params = array(
'api_key' => $api_key,
'api_secret' => $api_secret,
'urls' => null,
'uids' => 'all',
'detector' => 'Aggressive',
'namespace' => 'face.auth');
$action = $url . '?' . http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $action);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $binary);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
Любая помощь будет оценена.