我正在尝试使用Google Drive API搜索文件夹的父级。在搜索查询中,我必须动态传递文件ID,而不是硬编码。我尝试下面的代码。但是我得到的文件找不到json响应。
在这里它不以fileId作为值,我认为它被认为是String 如果我对值进行硬编码,它将起作用。 FileList结果= service.files()。list()。setQ(“ name ='testfile'”).execute();
for (com.google.api.services.drive.model.File file : result.getFiles()) {
System.out.printf("Found file: %s (%s)\n",
file.getName(), file.getId());
String fileId =file.getId();
FileList childern = service.files().list().setQ(" + \"file.getId()\" in parents").setFields("files(id, name, modifiedTime, mimeType)").execute();
答案 0 :(得分:1)
这应该有帮助。
String fileid=file.getId()
service.files().list().setQ("'" + fileId + "'" + " in parents").setFields("files(id, name, modifiedTime, mimeType)").execute();
确保您具有有效的file.getId()
答案 1 :(得分:0)
我知道您的问题指出了Java,但这项工作中唯一的sample在C#中。据我所知,另一个问题是PageStreamer.cs在Java客户端库中没有等效项。
我希望C#和Java足够接近,以使您对如何使其在Java中工作有一些想法。我的Java知识是基本的报价,但是如果您想尝试将其转换,我也许可以帮助您调试它。
try
{
// Initial validation.
if (service == null)
throw new ArgumentNullException("service");
// Building the initial request.
var request = service.Files.List();
// Applying optional parameters to the request.
request = (FilesResource.ListRequest)SampleHelpers.ApplyOptionalParms(request, optional);
var pageStreamer = new Google.Apis.Requests.PageStreamer<Google.Apis.Drive.v3.Data.File, FilesResource.ListRequest, Google.Apis.Drive.v3.Data.FileList, string>(
(req, token) => request.PageToken = token,
response => response.NextPageToken,
response => response.Files);
var allFiles = new Google.Apis.Drive.v3.Data.FileList();
allFiles.Files = new List<Google.Apis.Drive.v3.Data.File>();
foreach (var result in pageStreamer.Fetch(request))
{
allFiles.Files.Add(result);
}
return allFiles;
}
catch (Exception Ex)
{
throw new Exception("Request Files.List failed.", Ex);
}