OneDrive-API创建文件夹(如果不存在)

用户名

我正在使用Windows 10 UWP App,该应用程序使用了OneDrive APIc#。

我正在尝试获取Id特定子文件夹的或创建它(如果不存在)。到目前为止,它看起来像这样:

public async Task<string> getOldFolder<IDBEntry>(IDBEntry objectType)
{
try
{
    // authenticate
    if (!this.oneDriveClient.IsAuthenticated)
    {
        await this.oneDriveClient.AuthenticateAsync();
    }

    var children = await oneDriveClient.Drive.Special.AppRoot.Children.Request().Select("name,id").GetAsync(); // get name and id only (dont need the rest)
    string retID = string.Empty;

    string ID = string.Empty;
    if (children != null)
    {
        foreach (var item in children)
        {
            var s = item.Name;
            if (s == objectType.GetType().Name) // class name, e.g. "classA"
            {
                ID = item.Id;
            }
        }
    }

    // cancel, if nothing found
    if (ID == string.Empty)
    {
        return null;
    }

    children = await oneDriveClient.Drive.Items[ID].Children.Request().GetAsync();
    if (children != null)
    {
        foreach (var item in children)
        {
            if (item.Name == "old")
            {
                retID = item.Id;
            }
        }
    }

    if (string.IsNullOrEmpty(retID))
    {
        // create folder "old"
        // this is the part I'm stuck with
        string itemPath = objectType.GetType().Name + "/" + "old";
        Item item = await oneDriveClient.Drive.Special.AppRoot.ItemWithPath(itemPath).Content.Request().PutAsync
        if (item != null && (!string.IsNullOrEmpty(item.Id)))
        {
            retID = item.Id;
        }
    }

    return retID;
}
catch (Exception)
{
    return null;
}
}

该代码做什么?例如ClassA我放入一个类,然后在中查找Special Folder,只有我的App可以访问它,ClassA并搜索名为的文件夹old如果存在,则返回的Id文件夹old或创建文件夹old,然后返回Id

如您所见,我的方法看起来不太好,但是我不知道如何做得更好,也不能使其运行(创建文件夹是这里的问题)。我可以上传一个空文件,从而自动创建该文件夹,然后再次将其删除,但是我不希望这样做。

我该如何更好,更专业地解决这个问题?非常提前通知您

格蕾丝·冯

我放入一个Class(例如ClassA),然后它在Special Folder(特殊文件夹)中查找,只有我的App可以访问该ClassA,并搜索一个名为old的文件夹。如果存在,则返回文件夹old的ID或创建文件夹old然后返回它的ID。

我在ClassA这里看不懂您的意思,您是说要在Class您的应用程序中执行此工作吗?

无论如何,我在此处编写了一个示例,该示例可以将我的应用程序的文件夹放在中OneDrive,并查找其中是否有一个名为“ old”的子文件夹,如果是,则返回此文件夹的ID,如果不是,请创建一个文件夹并返回此新文件夹的ID。

private string ID;

private async void Button_Click(object sender, RoutedEventArgs e)
{
    try
    {
        var appfolderitems = await GetAppRoot();
        Dictionary<string, string> itemList = new Dictionary<string, string>();
        foreach (var item in appfolderitems)
        {
            var id = item.Id;
            var name = item.Name;
            itemList.Add(id, name);
        }
        if (itemList.ContainsValue("old"))
        {
            foreach (var item in itemList)
            {
                if (item.Value == "old")
                    ID = item.Key;
            }
        }
        else
        {
            ID = await CreateFolder();
        }
    }
    catch (Exception ex)
    {
        throw;
    }
}

private IOneDriveClient driveClient;

private async Task<IChildrenCollectionPage> GetAppRoot()
{
    driveClient =
        await OneDriveClientExtensions.GetAuthenticatedUniversalClient(
            new string[] { "onedrive.readwrite", "offline_access" }
            );

    if (!driveClient.IsAuthenticated) return null;

    var itemRequest = await driveClient.Drive.Special.AppRoot.Children.Request().GetAsync();
    return itemRequest;
}

private async Task<string> CreateFolder()
{
    if (!driveClient.IsAuthenticated) return null;
    var folderToCreate = new Item { Name = "old", Folder = new Folder() };
    var oldfolder = await driveClient.Drive.Special.AppRoot.Children.Request().AddAsync(folderToCreate);
    return oldfolder.Id;
}

如您在此处看到的,我将用于获取ID的代码放入Button click事件中,如果您想在Class中访问它,则可以尝试将此代码放入您的类的构造函数中。

顺便说一句,我没有在此处使用“搜索和筛选Api”来找到该文件夹​​,我的目的是区分名为“ old”的文件夹和名为“ old”的文件,例如,如果您搜索的是“ old.txt”,则默认情况下“ old”,“ old.txt”也将添加到结果中。目前,我还没有找到使用Q过滤器搜索特定类型的方法,可以尝试一下。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.NET OneDrive Api创建文件夹问题

来自分类Dev

使用API在OneDrive上创建文件夹

来自分类Dev

PHP创建文件夹(如果不存在)

来自分类Dev

PHP创建文件夹(如果不存在)

来自分类Dev

使用 OneDrive API 在另一个文件夹中创建文件夹

来自分类Dev

如果文件夹不存在,则在 vbs 中创建文件夹

来自分类Dev

如果不存在,则创建文件夹,如果不存在,则不执行任何操作

来自分类Dev

当目录不存在时创建文件夹

来自分类Dev

PHP:遍历目录路径并创建文件夹(如果不存在)

来自分类Dev

当文件/文件夹不存在时创建文件/文件夹的任务

来自分类Dev

在特定的OneDrive文件夹中创建OneNote

来自分类Dev

OneDrive多个文件夹/硬盘同步

来自分类Dev

创建文件夹后为什么不存在该文件夹?

来自分类Dev

如何使用OneDrive API将文件上传到OneDrive上的共享文件夹中?

来自分类Dev

使用OneDrive API创建App文件夹并上传文件

来自分类Dev

无法使用 Microsoft.Graph REST API 在根目录下创建新的 OneDrive 文件夹

来自分类Dev

OneDrive API与LiveSDK

来自分类Dev

OneDrive API节流

来自分类Dev

注销用户 OneDrive API

来自分类Dev

将驱动器Api保存到文件夹,如果文件夹不存在,则创建并保存

来自分类Dev

删除-复制创建OneDrive的文件

来自分类Dev

如何使用OneDrive REST API将文件上传到OneDrive?

来自分类Dev

如何使用OneDrive SDK将OneDrive上的文件夹/文件上传到Windows 10 UWP

来自分类Dev

从C#以编程方式创建文件到Onedrive?

来自分类Dev

使用OneDrive iOS SDK将图像上传到OneDrive中的文件夹

来自分类Dev

Total Commander无法在OneDrive文件夹中打开文件

来自分类Dev

OneDrive API createUploadSession "API not found"

来自分类Dev

OneDrive同步文件夹中的Git存储库

来自分类Dev

无法获取OneDrive文件夹的重解析点信息

Related 相关文章

  1. 1

    .NET OneDrive Api创建文件夹问题

  2. 2

    使用API在OneDrive上创建文件夹

  3. 3

    PHP创建文件夹(如果不存在)

  4. 4

    PHP创建文件夹(如果不存在)

  5. 5

    使用 OneDrive API 在另一个文件夹中创建文件夹

  6. 6

    如果文件夹不存在,则在 vbs 中创建文件夹

  7. 7

    如果不存在,则创建文件夹,如果不存在,则不执行任何操作

  8. 8

    当目录不存在时创建文件夹

  9. 9

    PHP:遍历目录路径并创建文件夹(如果不存在)

  10. 10

    当文件/文件夹不存在时创建文件/文件夹的任务

  11. 11

    在特定的OneDrive文件夹中创建OneNote

  12. 12

    OneDrive多个文件夹/硬盘同步

  13. 13

    创建文件夹后为什么不存在该文件夹?

  14. 14

    如何使用OneDrive API将文件上传到OneDrive上的共享文件夹中?

  15. 15

    使用OneDrive API创建App文件夹并上传文件

  16. 16

    无法使用 Microsoft.Graph REST API 在根目录下创建新的 OneDrive 文件夹

  17. 17

    OneDrive API与LiveSDK

  18. 18

    OneDrive API节流

  19. 19

    注销用户 OneDrive API

  20. 20

    将驱动器Api保存到文件夹,如果文件夹不存在,则创建并保存

  21. 21

    删除-复制创建OneDrive的文件

  22. 22

    如何使用OneDrive REST API将文件上传到OneDrive?

  23. 23

    如何使用OneDrive SDK将OneDrive上的文件夹/文件上传到Windows 10 UWP

  24. 24

    从C#以编程方式创建文件到Onedrive?

  25. 25

    使用OneDrive iOS SDK将图像上传到OneDrive中的文件夹

  26. 26

    Total Commander无法在OneDrive文件夹中打开文件

  27. 27

    OneDrive API createUploadSession "API not found"

  28. 28

    OneDrive同步文件夹中的Git存储库

  29. 29

    无法获取OneDrive文件夹的重解析点信息

热门标签

归档