Получение списка файлов по папке на 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