2016-09-30 2 views
-1

Я использую базовый PHP curl для отправки данных в iNaturalist API call, но я получаю внутреннюю ошибку сервера.php curl post call для размещения над другим изображением

Мой HTML-код:

<!DOCTYPE html> 
    <html> 
    <body> 

    <form action="imageuploaddir.php" method="post" enctype="multipart/form-data"> 
     Select image to upload: 
     <input type="file" name="fileToUpload" id="fileToUpload"> 
     <input type="submit" value="Upload Image" name="submit"> 

    </form> 

    </body> 
    </html> 

и мой imageuploaddir.php код

<?php 
$authorization = "Authorization: Bearer ###somekey; 

$file=$_FILES["fileToUpload"]; 

$postfields = array('file' =>'@'.$file,'observation_photo[observation_id]'=> 4230809); 
var_dump($postfields); 
$ch =curl_init(); 
curl_setopt($ch,CURLOPT_URL,"http://www.inaturalist.org/observation_photos"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_HEADER,FALSE); 
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); 
curl_setopt($ch, CURLOPT_VERBOSE,1); 
curl_setopt($ch, CURLOPT_POST,TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Content-Type: multipart/form-data", 
    $authorization 
)); 
$response = curl_exec($ch); 
$err = curl_error($ch); 

curl_close($ch); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 
    echo $response; 
} 

?> 




$postfields = array('file' =>'@'.$file,'observation_photo[observation_id]'=> 4230809); 

Когда я даю пост в этом формате я получаю сообщение об ошибке:

Notice: Array to string conversion

ответ

0

Я изменил массив postfields и установил для CURLOPT_SAFE_UPLOAD значение false, чтобы успешно отправить изображение и другой атрибут API.

$postfields = array(
     'file' => 
      '@'   . $_FILES['fileToUpload']['tmp_name'] 
      . ';filename=' . $_FILES['fileToUpload']['name'] 
      . ';type='  . $_FILES['fileToUpload']['type'] 
    ,'observation_photo[observation_id]'=>4230809); 

Я также установил CURLOPT_SAFE_UPLOAD ложному curl_setopt ($ ч, CURLOPT_SAFE_UPLOAD, ложь);

Смежные вопросы