Google drive api 使用驱动器api V3从共享文件夹检索文件,

Google drive api 使用驱动器api V3从共享文件夹检索文件,,google-drive-api,Google Drive Api,我拥有与其他Google用户共享文件夹的读/写权限 我想使用drivev3api列出共享文件夹链接中的所有文件(在所有文件夹中) 最好的方法是什么? 如果共享文件夹中的文件夹数量很大,则当前使用的解决方案的性能非常慢 我当前的解决方案: 1-查找共享链接中的所有文件夹 2-查找其父级为文件夹的所有文件 private void getFolderHierarchy(File Res, DriveService driveService, string localPath, string edit

我拥有与其他Google用户共享文件夹的读/写权限

我想使用drivev3api列出共享文件夹链接中的所有文件(在所有文件夹中)

最好的方法是什么? 如果共享文件夹中的文件夹数量很大,则当前使用的解决方案的性能非常慢

我当前的解决方案:

1-查找共享链接中的所有文件夹

2-查找其父级为文件夹的所有文件

private void getFolderHierarchy(File Res, DriveService driveService, string localPath, string editorName, string projectName)
{
    if (Res.MimeType == "application/vnd.google-apps.folder")
    {
        m_parent += Res.Name + @"\";

        foreach (var res in ResourceFromFolder(driveService, Res.Id).ToList())
            getFolderHierarchy(res, driveService, localPath, editorName, projectName);

        m_parent = m_parent.Remove(m_parent.Length - Res.Name.Length - 1);
    }
    else if (Res.MimeType == "image/jpeg" || Res.MimeType == "image/png")
    {
        {
            if (!m_DownloadedFromEditorFileId.Contains(Res.Id))
            {           
                m_DownloadedGoogleFileId.Add(Res.Name);
                m_parent = m_parent.Remove(m_parent.Length - Res.Name.Length);
            }
        }
    }
}

public List<File> ResourceFromFolder(DriveService service, string folderId)
{
    var request = service.Files.List();
    request.PageSize = 100;
    request.Q = "'" + folderId + "'" + " in parents and trashed=false";
    request.Fields = "files(modifiedTime,id,parents,name,webContentLink,mimeType)";

    List<File> TList = new List<File>();
    do
    {
        var children = request.Execute();

        foreach (var child in children.Files)
        {
            System.Threading.Thread.Sleep(10);
            TList.Add(service.Files.Get(child.Id).Execute());
        }
        request.PageToken = children.NextPageToken;
    } while (!String.IsNullOrEmpty(request.PageToken));

    return TList;
}
private void getFolderHierarchy(文件资源、驱动服务驱动服务、字符串localPath、字符串editorName、字符串projectName)
{
if(Res.MimeType==“application/vnd.google apps.folder”)
{
m_parent+=Res.Name+@“\”;
foreach(ResourceFromFolder(driveService,res.Id).ToList()中的var res)
getFolderHierarchy(res、driveService、localPath、editorName、projectName);
m_parent=m_parent.Remove(m_parent.Length-Res.Name.Length-1);
}
else if(Res.MimeType==“image/jpeg”| | Res.MimeType==“image/png”)
{
{
如果(!m_DownloadedFromEditorFileId.Contains(Res.Id))
{           
m_downloadeGoogleFileId.Add(Res.Name);
m_parent=m_parent.Remove(m_parent.Length-Res.Name.Length);
}
}
}
}
公用列表ResourceFromFolder(DriveService服务,字符串folderId)
{
var request=service.Files.List();
request.PageSize=100;
request.Q=“”+folderId+””“+”在父级中,trashed=false;
request.Fields=“文件(修改的时间、id、父项、名称、WebContent链接、mimeType)”;
List TList=新列表();
做
{
var children=request.Execute();
foreach(children.Files中的var child)
{
系统线程线程睡眠(10);
TList.Add(service.Files.Get(child.Id.Execute());
}
request.PageToken=children.NextPageToken;
}而(!String.IsNullOrEmpty(request.PageToken));
返回列表;
}

第二个选项是从共享文件夹获取文件的最佳方式。如本相关文件/列表中所述,将文件/列表与父查询一起使用

GET https://www.googleapis.com/drive/v2/files?q='FOLDERID'+in+parents&key={YOUR_API_KEY}
速度取决于共享文件夹下的文件大小/数量


希望这有帮助。

第二个选项是从共享文件夹获取文件的最佳方式。如本相关文件/列表中所述,将文件/列表与父查询一起使用

GET https://www.googleapis.com/drive/v2/files?q='FOLDERID'+in+parents&key={YOUR_API_KEY}
速度取决于共享文件夹下的文件大小/数量

希望这有帮助