Получение списка файлов по папке на Drive SDK

Я пытаюсь создать веб-интерфейс для пользователей, чтобы перемещаться по его / ее Google Диску и выбирать один или несколько документов, на которые можно будет ссылаться позже на веб-сайте, из БД. В настоящее время я создаю веб-интерфейс с использованием PHP.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти единственную функцию для получения списка файлов по идентификатору папки.

Я пытался с помощью:

$service->children->listChildren($rootFolderId)

... но это даст только ссылочный идентификатор файлов для файлов в папке (так называемый дочерний ресурсный элемент), что означает, что я должен пройти по этим файлам и создать вызов для каждого из них, чтобы получить все метаданные Мне нужно для моего интерфейса.

К несчастью..

$service->files->list()

... будет список всех моих файлов без параметров фильтрации по папкам.

Я хотел бы знать, существует ли эффективный способ извлечения списка файлов папок из одного обращения к серверу Drive. Я на самом деле помню, как смог выполнить это через старый Google DOC API.

Большое спасибо за Вашу помощь

4 ответа

Решение

NB. В этом ответе используется API версии 2. Новые приложения должны писать в API v3.

Теперь можно использовать конечную точку drive.files.list для вывода списка файлов, принадлежащих определенной папке.

Для этого вы можете использовать ?q= Параметр запроса выглядит следующим образом:

GET https://www.googleapis.com/drive/v2/files?q="'<FOLDER_ID>' in parents"

В PHP это было бы

$service->files->list(array('q' => "'<FOLDER_ID>' in parents"));

Будет ли параметр запроса <FOLDER_ID> in parents список файлов и / или папок, имеющих такой у родителей?
На мой взгляд,- это ожидаемый результат. Я задаю этот вопрос, потому что в приведенном выше ответе говорится:

... для просмотра файлов, принадлежащих определенной папке.

и документация о параметрах поиска объясняет:

Это находит все дочерние папки для родительской папки с идентификатором 1234567.

Я добавлю, что список только для папок можно вернуть, добавив что-то вроде
and mimeType='application/vnd.google-apps.folder'
к строке запроса.

Теперь это просто, не волнуйтесь. Если вы хотите получить все файлы и папки из определенной папки, просто скопируйте и вставьте этот код в ваш проект, и он извлечет все файлы и папки из определенной папки. Примечание. У вас должен быть свой собственный идентификатор папки.

 List<File> result = new ArrayList<File>();
    Files.List request = null;

    try {
          request = mService.files().list();//plz replace your FOLDER ID in below line
          FileList files = request.setQ("'"+MyFoler_Id+"' in parents and trashed=false"").execute();
          result.addAll(files.getItems());          
          request.setPageToken(files.getNextPageToken());
        } 
      catch (IOException e)
      {
        System.out.println("An error occurred: " + e);
        request.setPageToken(null);
      }

// Распечатка названий файлов и папок, которые мы получили.

  for(File f:result)
  {
      System.out.println("My recvd data "+f.getTitle());
  }

Не нужно использовать поисковые запросы. Просто позвоните в GET https://www.googleapis.com/drive/v2/files/{folderId} / children

https://developers.google.com/drive/v2/reference/children/list

Другие вопросы по тегам