Как составить список папок и файлов внутри определенной папки - PullRequest
2 голосов
/ 05 июля 2019

У меня есть несколько вопросов относительно API Google Drive. Я следую за кодом отсюда (https://everyday -be-coding.blogspot.com / )

  1. Как изменить длину списка файлов по умолчанию (100) на полную длину списка файлов с Google Drive?
  2. Как избежать распечатки файла из корзины Google Drive?
  3. Как искать и выводить содержимое внутри определенной папки с помощью имя папки на гугл-диске?

Это проблемы, с которыми я сталкиваюсь с API-интерфейсом Google Drive. Пожалуйста, помогите мне решить эти проблемы.

Это код, который я использую для перечисления файлов

 public static List<GoogleDriveFiles> GetDriveFiles()
    {
        DriveService service = GetService();

        // Define parameters of request.

        FilesResource.ListRequest FileListRequest = service.Files.List();
        FileListRequest.Q = "mimeType = 'application/vnd.google-apps.folder'";

        FileListRequest.Fields = "nextPageToken, files(id, name, size, version, trashed, createdTime)";

        // List files.
        IList<Google.Apis.Drive.v3.Data.File> files = FileListRequest.Execute().Files.Where(c => c.Trashed == false).ToList();
        List<GoogleDriveFiles> FileList = new List<GoogleDriveFiles>();

        if (files != null && files.Count > 0)
        {
            foreach (var file in files)
            {
                GoogleDriveFiles File = new GoogleDriveFiles
                {
                    Id = file.Id,
                    Name = file.Name,
                    Size = file.Size,
                    Version = file.Version,
                    CreatedTime = file.CreatedTime
                };
                FileList.Add(File);
            }
        }
        return FileList;
    }

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Как изменить длину списка файлов по умолчанию (100) на полную длину списка файлов с Google Drive?

files.list в качестве максимального размера страницы по умолчанию, равного 100, но вы можете увеличить его, отправив параметр pageSize, который можно установить в диапазоне от 100 до 1000.

После этого вам нужно будет использовать NextPageToken. Вам повезло в том, что у нас есть метод PageStreamer для этого в C #

var pageStreamer = new Google.Apis.Requests.PageStreamer<Google.Apis.Drive.v3.Data.File, FilesResource.ListRequest, Google.Apis.Drive.v3.Data.FileList, string>(
                                                   (req, token) => request.PageToken = token,
                                                   response => response.NextPageToken,
                                                   response => response.Files);

У меня есть руководство по его использованию https://www.daimto.com/list-all-files-on-google-drive/

Как избежать распечатки файла из корзины Google Drive?

File.list имеет другой параметр, называемый параметром q, который позволит вам искать файлы, которые вы ищете search

, поэтому следующее будет игнорировать мусорные файлы.

q = trashed = false

Как искать и выводить содержимое в определенной папке с именем папки на диске Google?

Для этого вам нужно будет найти папку, которую вы ищете, самый простой способ сделать это - снова использовать параметр q, и поиск только папок с именем поможет вам найти папку, которую вы ищете.

mimeType != 'application/vnd.google-apps.folder' and name = 'hello'

Получив файл file.id для этой папки,

mimeType != 'application/vnd.google-apps.folder' and name = 'hello'

Затем вы можете сделать еще один запрос, который найдет все файлы в родительской папке

'the file id here' in parents

Лучшее место для проверки ваших поисков - попробуйте на странице документации

Мои учебники Поиск файлов на Google Диске с помощью C #

1 голос
/ 05 июля 2019
  1. В Google Диске нет ограничения на количество файлов, вы можете использовать nextPage , и он будет продолжен на другой странице, когда достигает 100 файлов.
  2. Вы можете избежать перечисления файлов в Корзине, используя запрос trashed = false.
  3. Для поиска файлов в папке вам нужен идентификатор папки и поиск запрос ‘folder id' in parents.

Надеюсь, это поможет!

...