Google Drive API v3(C#.NET)通过标题投掷搜索文件夹/文件RequestError无效值[400



我正在尝试将文件上传到Google Drive的特定文件夹。由于我需要文件夹的ID(而不仅仅是名称)来设置上传目的地(文件的父级),我尝试按名称搜索它,并从下面的查询中获得第一个返回文件的ID。我得到的不是结果,而是一个错误:

Google.Apis.Requests.RequestError Invalid Value [400]
Errors [ Message[Invalid Value] Location[q - parameter] Reason[invalid] Domain[global]
at Google.Apis.Requests.ClientServiceRequest`1.Execute()
...

如果我真的试图搜索任何东西,我要么会得到这个错误,要么会得到一个空响应(即,对所有目录的查询mimeType='application/vnd.google-apps.folder'返回一个空列表(但不会抛出错误))。

我的代码的相关片段:

FilesResource.ListRequest request = service.Files.List();
request.Q = "title='test_folder'";
string folderId = request.Execute().Files[0].Id;    // Error occurs here upon execution
...
fileMeta.Parents = new List<string> { folderId };

有趣的是,这个查询在谷歌的API测试站点API v2上有效,但API v3不有效。获取所有文件夹的查询在这两种情况下都有效(谷歌测试站点上的v2和v3),但我通过.NET应用程序得到了一个空响应。

PS:文件上传到"我的驱动器"目录工作,驱动器服务操作,如设置文件权限工作等

对检查内容/我搞砸的地方持开放态度。

您遇到的问题是您使用的是Google Drive v3 API的File.Name而不是File.Title。在v2中使用CCD_ 4。

request.Q = "mimeType = 'application/vnd.google-apps.folder' and name = 'test_folder'";

这是一个已知的错误,一年多前我已经在文档中向谷歌报告了这个错误,仍在等待他们解决这个问题。

更改行:

request.Q = "title='test_folder'";

request.Q = "name='test_folder'";

注意:已删除的文件夹和文件仍有其ID(永久删除除外-在回收站中)。所以在某些情况下,这一行将是错误的,或者不会返回真实的结果:

string folderId = request.Execute().Files[0].Id; 

希望得到帮助。

最新更新