【问题标题】:How to get full file path from google drive using java如何使用java从谷歌驱动器获取完整文件路径
【发布时间】:2016-04-02 09:39:27
【问题描述】:

我是 Java 开发人员。我使用谷歌应用程序 client_id 和 client_secrect 将谷歌驱动器集成到我的应用程序中。 基于这个client_id,我得到了用户的访问令牌。获得访问令牌后。我使用以下代码从驱动器中获取文件和文件夹。

HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
System.out.println(inventoryIntegrationConfig.getAccessToken());

GoogleCredential credential = new GoogleCredential().setAccessToken(inventoryIntegrationConfig.getAccessToken());

Drive service = new Drive.Builder(httpTransport, jsonFactory, null)
.setApplicationName("Akoonu")
.setHttpRequestInitializer(credential).build();

Files.List request = service.files().list();
.
.
.
.

我成功收到了文件和文件夹下载 url 和文件名。但我无法获得谷歌驱动器的完整文件路径。例如 BaseFolder/SubFolder1/Subofsubfolder/testfile.txt。 这里我的预期输出是路径:BaseFolder/SubFolder1/Subofsubfolder/

我无法从任何 Drive 类中获取完整的文件路径。你能告诉我如何获取完整的文件路径吗? 我们需要使用哪种方法来获取完整的文件路径?

请帮帮我。

【问题讨论】:

    标签: google-drive-api


    【解决方案1】:

    与传统文件系统不同,Google Drive 并没有完整文件夹路径或绝对文件位置的概念。一个文件可以位于零个或多个文件夹中。敏捷可能与所有者的“我的驱动器”没有直接关联。

    因此,要回答您的问题,您需要使用 files.get() 您的相关文件。然后对parents 中列出的每个文件夹 ID 执行相同的 files.get()。继续获取任何父母,直到您到达“我的云端硬盘”根文件夹或没有父母的文件夹并且有您的文件路径。

    根据文件夹结构的复杂性,为获取文件/文件夹 ID 和父级的用户执行 files.list() 可能更快、更有效。这将比获取请求花费更长的时间,但一旦完成,您应该拥有确定文件夹路径所需的所有数据。

    【讨论】:

      【解决方案2】:

      没有调用/获取完整文件路径的方法。首先让我们弄清楚有关文件完整路径的一些细节。停止考虑文件夹和路径,想想标签(父级和集合)之类的术语。

      父母

      包含文件的父文件夹的 ID。 如果未指定为创建请求的一部分,该文件将直接放置在“我的驱动器”文件夹中。更新请求必须使用 addParentsremoveParents 参数来修改值。

      一个文件可以有多个父级,每个父级又可以有一个或多个父级/标签/集合。要获取“文件路径”,我们需要递归获取其父级的父级。根据下面由 pinoyyid 回答的 SO 票,“请记住,一个文件可以有多个父级,每个父级也可以有多个父级,因此一个文件可以有多个路径。”

      使用 Google Drive,忽略术语路径/文件夹,而只是文件的属性。

      这是一个Apps Script,它创建了一个解决方法来获取文件的父/集合和一个相关的SO question,以获取更多信息。希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2017-09-23
        • 2021-07-31
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        • 2020-01-04
        • 1970-01-01
        • 2018-05-30
        • 1970-01-01
        相关资源
        最近更新 更多