android 如何在Google Drive中查找文件夹

qpgpyjmq  于 2023-03-28  发布在  Android
关注(0)|答案(5)|浏览(265)

我已经实现了上传文件到谷歌驱动器的功能。我已经按照quick start中的指南做了。
现在我做的功能上传文件到特定的文件夹 (例如:upload file to“My_Folder_name”).我在API Reference中找到了这个示例,麻烦的是如果我只知道文件夹的名称,我怎么才能得到parentId*(文件夹id)*。
我找不到任何按名称搜索文件夹的功能。
获取文件夹的唯一方法是获取所有文件,然后检查 MimeType“application/vnd.google-apps.folder” 是否相等,并将其与文件夹名称进行比较。

if("application/vnd.google-apps.folder".equals(body.getMimeType()) && "My_Folder_name".equals(body.getTitle()) ){
            ....        
}

先谢了。

ct2axkht

ct2axkht1#

根据Mike的评论编辑:
name='foldername'在2022年不再正确
新语法应为:mimeType='application/vnd.google-apps.folder' and title = 'foldername'
原答复:
查询应如下所示:
mimeType='application/vnd.google-apps.folder' and name='foldername'
在Python中:

service.files().list(q="mimeType='application/vnd.google-apps.folder' and name='foldername'",
                                         spaces='drive',
                                         fields='nextPageToken, files(id, name)',
                                         pageToken=page_token).execute()

注:name='foldername'不是title='foldername'

byqmnocz

byqmnocz2#

您可以将q查询参数添加到请求URL,并使用Drive查询语言来限制搜索:
https://developers.google.com/drive/search-parameters
要仅搜索文件夹并限制按标题搜索,您的查询应如下所示:

mimeType = 'application/vnd.google-apps.folder' and title = 'My_Folder_name'
wydwbb8l

wydwbb8l3#

如果你正在寻找一个Typescript/Javascript的答案,这里就是它。

const fileList = await this.getInstance().files.list({
        q: `(mimeType='application/vnd.google-apps.folder' and name='${folderName}') and trashed = false`,
        fields: "nextPageToken, files(id, name)",
        supportsAllDrives: true,
        spaces: 'drive',
        orderBy: 'name desc'
      });

如果你想在另一个文件夹中搜索,你可以

const fileList = await this.getInstance().files.list({
        q: `"${parentFolderId}" in parents and (mimeType='application/vnd.google-apps.folder' and name='${folderName}') and trashed = false`,
        fields: "nextPageToken, files(id, name)",
        supportsAllDrives: true,
        spaces: 'drive',
        orderBy: 'name desc'
      });

当然,您需要根据您的使用情况进行一些修改,特别是如何获取驱动器示例

nszi6y05

nszi6y054#

你需要做两件事:
使用files.list(它提供完整的文件资源)(https://developers.google.com/drive/v2/reference/files/list)。修改你的查询,添加你想要搜索的父ID。
mimeType = 'application/vnd.google-apps.folder'和父项中的'folderId'

px9o7tmv

px9o7tmv5#

我想这会帮助你

/*String pageToken = null;
            do {
                FileList fileList = driveService.files().list().setQ("'" + parentFolderId + "' in parents")
                        .setFields("nextPageToken, files(id,parents,name,mimeType)")
                        .setPageToken(pageToken).execute();

                if (fileList.getFiles().size() == 0)
                    System.out.println("No data inside the folder");

                    for (File file : fileList.getFiles()) {
                        System.out.println(file.getId());
                    }
                pageToken = fileList.getNextPageToken();
            } while (pageToken != null);*/

相关问题