【问题标题】:Google drive api to get all children is not working if I dynamically pass fileId to query如果我动态地将 fileId 传递给查询,Google drive api to get all children 不起作用
【发布时间】:2023-04-05 15:48:01
【问题描述】:

我正在尝试使用 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();

【问题讨论】:

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


    【解决方案1】:

    这应该会有所帮助。

    String fileid=file.getId()
    
     service.files().list().setQ("'" + fileId + "'" + " in parents").setFields("files(id, name, modifiedTime, mimeType)").execute();
    

    确保您拥有有效的file.getId()

    【讨论】:

      【解决方案2】:

      我知道你的问题是 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);
                  }
      

      【讨论】:

      • 我的问题是查询" + \"file.getId()\" in parents" 有什么方法可以动态传递fileid而不是硬编码
      • file.getId() 没有硬编码您现在正在循环的当前文件中的文件 ID
      • 我正在遍历文件夹的子文件夹并获取文件 ID。它没有硬编码
      • 如果我硬编码它可以工作,我试过了,但是如何将动态 ID 传递给该查询
      猜你喜欢
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      相关资源
      最近更新 更多