Работали над публикацией фотографий наблюдений в iNaturalist с помощью iNaturalist POST / survey_photos api с использованием php cURL, но я не могу этого сделать.Провел некоторое исследование и обнаружил это на github, я попробовал код, но получил ошибку 'status': 422.
Мой код:
<?php
require './init.php';
if ( isset($_POST['submitfile']) )
{
// Make sure there are no upload errors
if ($_FILES['upfile']['error'] > 0)
{
die("Error uploading file...");
}
$token = $_SESSION['access_token'];
$file_path = 'c:\Users\hp\Pictures\New folder';
$suffix = 'image/jpeg';
$photo_name = $_FILES['upfile']['name'];
$inat_id = 'White Magnolia';
$boundary = rand(10,100);
$body = '';
$body .= '--' . $boundary . "\r\n";
$body .= 'Content-Disposition: form-data; name="upfile"; filename=' . basename($file_path) . "\"\r\n";
$body .= 'Content-Type: ' . $suffix . "\r\n\r\n";
$body .=file_get_contents($photo_name) . "\r\n";
$body .= '--' . $boundary . "\r\n";
$body .= 'Content-Disposition: form-data; name="observation_photo[observation_id]"' . "\r\n";
$body .= 'Content-Type: application/json' . "\r\n\r\n";
$body .= json_encode(['observation_id' => $inat_id]) . "\r\n";
$body .= '--' . $boundary . '--' . "\r\n";
$photo_payload = array('observation_photos'=>array(
'method'=>'POST',
'timeout'=>'10',
'headers'=> array(
'Authorization'=>'Bearer'.$token,
'Content-Type'=>'multipart/form-data;'
),
'body' => $body
));
$payload = json_encode($photo_payload);
print_r($payload);
echo "<hr><br>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.inaturalist.org/v1/observation_photos?access_token=".$token);
//curl_setopt($ch, CURLOPT_URL, "https://api.inaturalist.org/v1/observations?access_token=".$token);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
$result = curl_exec($ch);
curl_close($ch);
// Print the result?
print_r($result);
}
?>
<hr>
<br>
<form action="" method="post" enctype="multipart/form-data">
Select file to upload:
<input type="file" name="upfile">
<input type="submit" value="Upload File" name="submitfile">
</form>
Ошибка, которую яполучить при загрузке изображения:
![enter image description here](https://i.stack.imgur.com/ZvdzN.png)