【问题标题】:Google Drive API upload file with custom property, properties missing from response带有自定义属性的 Google Drive API 上传文件,响应中缺少属性
【发布时间】:2017-06-15 03:41:08
【问题描述】:

我正在尝试使用自定义属性保存一个谷歌驱动器文件,但它无法正常工作,并且由于谷歌 API 的文档非常糟糕,我正在为此苦苦挣扎。到目前为止,这是我的代码:

$g = new FileCtrl();
$fileMeta = new Google_Service_Drive_DriveFile();
$fileMeta->name = $file['name'];
$fileMeta->parents = [$g->googleDriveFolderId];
$fileMeta->appProperties = (object)['lead_id'=>$file['lid'], 'sales_package_id'=>$file['pid'], 'user_id'=>$user->uid];
//$fileMeta->size = $file['size'];

$fileData = array(
              'data' => $fileContent,
              'mimeType' => $file['media_type'],
              'uploadType' => $file['multipart'],
            );

 //create file in google drive
$res = $g->client->files->create($fileMeta, $fileData);

它没有返回错误并且事件被保存,但是没有自定义属性!?

【问题讨论】:

  • 你的代码抛出错误?什么也没做?欢迎来到堆栈,您需要告诉我们您发布的代码存在什么问题。
  • 它没有返回错误并且事件被保存,但是没有自定义属性!?
  • 你在哪里检查自定义属性没有被插入?

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


【解决方案1】:

您可能正在寻找返回的文件资源中的属性。

它们不存在的原因是 Drive 仅返回少量文件属性(名称、mime 类型、id)。如果您想查看完整的文件资源,您需要在请求中包含fields=*。所以一个正确的请求看起来像

POST https://content.googleapis.com/drive/v3/files?fields=*

我不知道 PHP 库,所以你需要弄清楚这一点。会是这样的

'fields' => '*',

【讨论】:

  • 谢谢,这很好用。你的猜测是正确的:'fields' => '*',
【解决方案2】:

我刚刚测试了这个。

请求:

{
  "name": "Linda Test",
  "mimeType": "application/vnd.google-apps.document",
  "appProperties": {
    "TestingId": "1"
  }
}

回复:

{
 "kind": "drive#file",
 "id": "1mhP2EW4Kbl81F5AuJ4zJ2IPoeI56i_Vd5K-dfGJRj6Y",
 "name": "Linda Test",
 "mimeType": "application/vnd.google-apps.document"
}

执行 file.get 以检查文件元数据。

{
 "kind": "drive#file",
 "id": "1mhP2EW4Kbl81F5AuJ4zJ2IPoeI56i_Vd5K-dfGJRj6Y",
 "name": "Linda Test",
 "mimeType": "application/vnd.google-apps.document",
 "starred": false,
 "trashed": false,
 "explicitlyTrashed": false,
 "parents": [
  "0AJpJkOVaKccEUk9PVA"
 ],
 "appProperties": {
  "TestingId": "1"
 },
  ...
}

我建议您在返回后使用File.get 方法检查您上传的文件,以确保它已被添加。据我所知,现在可以通过 Google Drive 网站界面查看这些添加的字段。如果在破坏 file.get 后您仍然发现它没有上传,我建议您将其记录为 Google APIs PHP client 库团队的错误。这适用于原始休息请求,这可能是库的问题。

【讨论】:

    猜你喜欢
    • 2018-07-19
    • 2016-03-19
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多