Вы не загружаете метаданные файла, вы загружаете только сам файл. тело сообщения должно включать метаданные файла, имя файла которого является одним из этих элементов.
Пример клиентской библиотеки php для официального пользователя
документация показывает, как это сделать с клиентской библиотекой googles.
$fileMetadata = new Google_Service_Drive_DriveFile(array(
'name' => 'photo.jpg'));
$content = file_get_contents('files/photo.jpg');
$file = $driveService->files->create($fileMetadata, array(
'data' => $content,
'mimeType' => 'image/jpeg',
'uploadType' => 'multipart',
'fields' => 'id'));
printf("File ID: %s\n", $file->id);
PHP CURL дикая догадка
Извините, я не могу помочь вам сделать это в curl.Но это просто вопрос отправки тела сообщения в виде строки JSon, содержащей желаемые данные.Следующее мое лучшее предположение после некоторого поиска в Google.
$data = array("name" => "picture.jpg", "mimeType"=> "image/jpeg");
$data_string = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);