用于上载具有其他属性的图像的php curl post调用

用于上载具有其他属性的图像的php curl post调用,php,api,Php,Api,我使用一个基本的PHP curl将数据发布到,但我得到了内部服务器错误 我的HTML代码是: <!DOCTYPE html> <html> <body> <form action="imageuploaddir.php" method="post" enctype="multipart/form-data"> Select image to upload: <input type="f

我使用一个基本的PHP curl将数据发布到,但我得到了内部服务器错误

我的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);

我更改了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设置为false curl_setopt($ch,CURLOPT_SAFE_UPLOAD,false)