Получение списка файлов по папке на SDK накопителя
Я пытаюсь создать веб-интерфейс для пользователей, чтобы перемещаться по его/ее Диску Google и выбирать один или несколько документов, на которые позже ссылаются на веб-сайте из БД. В настоящее время я создаю веб-интерфейс с помощью PHP.
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти одну функцию для получения списка файлов по идентификатору папки.
Я попытался использовать:
$service->children->listChildren($rootFolderId)
... но это даст только идентификатор файлов файлов в папке (так называемый элемент детского ресурса), что означает, что мне нужно прокрутить эти файлы и создать вызов для каждого из них, чтобы получить все метаданные, которые мне нужны для моего пользовательского интерфейса.
К сожалению..
$service->files->list()
.. будет отображать ВСЕ мои файлы без параметров фильтрации по папке.
Я хотел бы знать, есть ли эффективный способ извлечения списка файлов папок с одного вызова на сервер Диска. Я на самом деле помню, что смог выполнить эту проверку по сравнению с старым API DOC Google.
Большое спасибо за вашу помощь.
Ответы
Ответ 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'
> .
Ответ 3
Не нужно использовать поисковые запросы.
Просто позвоните
GET https://www.googleapis.com/drive/v2/files/ {folderId}/children
https://developers.google.com/drive/v2/reference/children/list
Ответ 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());
}