Получение списка файлов по папке на SDK накопителя - программирование
Подтвердить что ты не робот

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

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

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

Я попытался использовать:

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

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

К сожалению..

$service->files->list()

.. будет отображать ВСЕ мои файлы без параметров фильтрации по папке.

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

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

4b9b3361

Ответ 1

Теперь можно использовать конечную точку 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"));

Ответ 2

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

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

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

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

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

Ответ 4

Легко теперь, не волнуйтесь. Если вы хотите получить все файлы и папку из определенного 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());
  }