我正在使用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