phpのcurlを使ってGoogle Driveにファイルをアップロードするスクリプトを、公式ドキュメントを参考に作っているのですがPOSTデータの改行コードをいじくるなど何度も試したのですがcurl_execの返り値がfalseになってしまいます。どこがおかしいかご指摘頂けると助かります。

$token = "xxxx";
$url = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";

$inputarray = '';
$inputarray .= "--foo_bar_baz\r\n";
$inputarray .= "Content-Type: application/json; charset=UTF-8\r\n\r\n";
$inputarray .= "{\r\n";
$inputarray .= "\"name\": \"upload.jpg\",\r\n";
$inputarray .= "}\r\n\r\n";
$inputarray .= "--foo_bar_baz\r\n";
$inputarray .= "Content-Type:image/jpeg\r\n\r\n";
$inputarray .= file_get_contents("upload.jpg") . "\r\n";
$inputarray .= "--foo_bar_baz--\r\n";


$headers = array(
    'Content-Type: multipart/related; boundary=foo_bar_baz',
    'Authorization: Bearer ' . $token,
    'Content-Length: ' . strlen($inputarray)
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $inputarray);

$output = curl_exec($ch);
curl_close($ch);

echo $output;