Google Drive PHP API空上传文件

时间:2014-05-04 02:27:22

标签: php google-drive-api google-api-php-client

所以我在使用GAPI上传PHP时遇到了奇怪的问题。该文件实际上是在驱动器上创建的,但由于某种原因,数据不会出现在Google上,而只是创建一个0字节的文件。

这是我的代码:

function uploadFile($service, $title, $description, $parentId, $mimeType, $filepath) {
    $mimeType = "image/png";
    $title = "test.png";
    $file = new Google_Service_Drive_DriveFile();
    $file->setTitle($title);
    $file->setDescription($description);
    $file->setMimeType($mimeType);

    // Set the parent folder.
    if ($parentId != null) {
        $parent = new Google_Service_Drive_ParentReference();
        $parent->setId($parentId);
        $file->setParents(array($parent));
    }

    try {
        $data = file_get_contents();

        $createdFile = $service->files->insert($file, array(
          'data' => $data,
          'mimeType' => $mimeType,
        ));

        // Uncomment the following line to print the File ID
        // print 'File ID: %s' % $createdFile->getId();

        //return $createdFile;
    } catch (Exception $e) {
        echo "An error occurred: " . $e->getMessage();
    }
}

一切都经过验证,所以我知道这不是问题所在。当我输出$ data时,我得到了你在拉文件时通常得到的垃圾,所以我知道这不是问题..所有的范围都应该是正确的但是在这里它们仍然是:

$client->addScope("https://www.googleapis.com/auth/drive");
$client->addScope("https://www.googleapis.com/auth/drive.file");
$client->addScope("https://www.googleapis.com/auth/drive.appdata");
$client->addScope("https://www.googleapis.com/auth/drive.scripts");
$client->addScope("https://www.googleapis.com/auth/drive.apps.readonly");
$client->addScope("https://www.googleapis.com/auth/drive.metadata.readonly");
$client->addScope("https://www.googleapis.com/auth/drive.readonly");

我没有关于这个问题的文档,所以任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:6)

我能够解决这个问题,并希望将其留给可能有此问题的其他人。 查看源代码并注意到一条未被触发的If语句。

更改

$createdFile = $service->files->insert($file, array(
  'data' => $data,
  'mimeType' => $mimeType,
));

$createdFile = $service->files->insert($file, array(
  'data' => $data,
  'mimeType' => $mimeType,
  'uploadType' => 'media'  //add this for pdfs to work
));

就这么简单!当它变得那么容易讨厌......