我正在使用Windows 10 UWP应用程序,它使用了c#中的OneDrive API
。OneDrive-API创建文件夹(如果不存在)
我试图获取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
,其中只有我的应用程序有权访问此ClassA
并搜索名为old
的文件夹。如果存在,则返回文件夹old
的Id
或创建文件夹old
,然后返回Id
。你可以看到,我的方法不是很好看,但我不知道,如何做得更好,也没有让它运行(创建文件夹是这里的问题)。我可以上传一个空文件,从而自动创建文件夹,然后再次删除它,但我不希望这样做。
我该如何更好,更专业地解决这个问题? Tahnk你非常提前
嗯我觉得'ClassA'的问题比帮助更困惑。无论如何,你的答案是,我希望的。与类的东西是,我有一个接口和多个类继承这个接口。这些类是数据库的条目,我想将类的每个条目放入共享文件夹中。每个条目的名称决定,如果它同时更新或相同,我可以去没有同步增量,这仍然是我很困惑。 – user3079834
@ user3079834,听起来相当复杂,你的数据库在哪里?如果您只是将数据库文件上传到OneDrive,那么这样做不行吗?无论如何,如果您有任何其他问题,欢迎在这里提出一个新问题。 –
冯:数据库是本地的,但我想要同步到多个设备,并且由于用户将对数据库进行更改和/或经常添加条目,所以我发现每次都会同步数据库,因为时间和数据使用量太大,所以我选择宁愿同步每个条目本身,当它更改时,我只需要下载该条目。这就是界面和类的作用:每个条目都有它自己的唯一ID和上次更新的日期时间。这一组合使得OneDrive上的文件名成为可能。正如我在上面的帖子中提到的,这不是专业的,但我认为是有效的 – user3079834