2014-02-10 6 views
1

Я ищу, чтобы получить все файлы в папке на Google Диске (с учетом начальной папкиId), включая все файлы внутри подпапок. В настоящее время я могу получить все файлы в папке, которая не содержит каких-либо подпапок, и я пытаюсь реализовать следующий шаг рекурсивного просмотра подпапок и получить все файлы внутри.Согласование идентификаторов файлов и идентификаторов дисков Google

Я использую drive.children.list на folderId и получить массив привода # childReference объектов. К сожалению, эти объекты напрямую не говорят мне, является ли это папкой или документом, но я заметил, что файлы folderId намного короче, чем файлы.

1. Первый объект ниже - это папка, а второй объект - это файл. Идентификатор папки намного короче, чем файл, но нет ничего, что помогло бы мне различить, каждый ли объект является папкой или файлом.

[ { kind: 'drive#childReference', 
     id: '0B2ecLLJU7rP3a2ZmVFZQVDdIRXM', 
     selfLink: 'https://www.googleapis.com/drive/v2/files/0B2ecLLJU7rP3YXM0U2tOVm1wcVE/children/0B2ecLLJU7rP3a2ZmVFZQVDdIRXM', 
     childLink: 'https://www.googleapis.com/drive/v2/files/0B2ecLLJU7rP3a2ZmVFZQVDdIRXM' }, 
    { kind: 'drive#childReference', 
     id: '178rrwgIQxuoUgphvVYKppTM37PzT1yhzQOr9E1Shpf4', 
     selfLink: 'https://www.googleapis.com/drive/v2/files/0B2ecLLJU7rP3YXM0U2tOVm1wcVE/children/178rrwgIQxuoUgphvVYKppTM37PzT1yhzQOr9E1Shpf4', 
     childLink: 'https://www.googleapis.com/drive/v2/files/178rrwgIQxuoUgphvVYKppTM37PzT1yhzQOr9E1Shpf4' } ] 

Я действительно надеюсь, что я не должен сделать еще один запрос для каждого из объектов, чтобы определить, является ли папка или файл. Но я боюсь, что просто определение длины идентификатора слишком слабое. У кого-нибудь есть предложения? Было бы безопасно сделать определение, основанное исключительно на длине id?

Спасибо!

ответ

0

Сделайте один звонок по телефону files.list.

Папка на Диске рассматривается как особый тип файла с метаданными. Это позволяет вам получать список файлов и папок с помощью files.list. Вы можете указать, является ли элемент папкой с использованием mimeType, который возвращается как одно из полей ресурсов файлов.

Кстати, настоятельно рекомендуется совершать вызовы api для поиска папки пользователя по требованию. Вызов API медленный, и некоторые тяжелые пользователи могут заморозить ваше приложение. И вы легко можете воспользоваться пределом использования API.

1

Можно ли сделать определение, основанное исключительно на длине идентификатора? не

нет

Кто-нибудь есть какие-либо предложения?

Некоторые предложения

  • Для каждого ребенка ID, принеси свой объект. Я думаю, это то, чего вы пытались избежать.
  • Вместо того, чтобы рекурсировать папки, выполните запрос files.list для всех папок, а затем итерации их для построения иерархии в памяти.
  • в зависимости от вашего приложения, помните, что файлы могут иметь несколько родителей. Таким образом, файл в папке1/folder2/folder3 может иметь как folder3 , так и folder1 в качестве родителей. Тогда вам просто нужно запросить для всех детей folder1, чтобы получить все файлы.
2

Согласно documentation

папку, файл с прикладной MIME тип/vnd.google-apps.folder и без расширения.

Таким образом, вы можете определить, есть ли объект File, перейдя по ссылке mimeType.

Смежные вопросы