如何简单地访问SkyDrive,写入和读取文件?

时间:2013-09-03 10:33:53

标签: c# windows-phone-7 windows-phone-8 onedrive

我想使用SkyDrive来备份一些信息。

但似乎他们已从新SDK中删除了此命名空间Microsoft.Live.Controls;,所有代码示例和此处的答案都已过时。

reference也已过时;没有更多LiveConnectClient

如何在这些更改后将文件简单地备份到SkyDrive?

(感谢任何代码示例或参考。)

1 个答案:

答案 0 :(得分:4)

这并不难,但确实没有参考或教程。在我的Windows Phone 8项目中,下面的所有内容都可以正常工作。

安装Live SDK后,您需要包含Microsoft.Live命名空间。

首先,您必须创建并初始化客户端。之后,您登录并可以发送一些数据:

LiveConnectClient client;
var auth = new LiveAuthClient("YourGeneratedKey");
var result = await auth.InitializeAsync(new [] {"wl.basic", "wl.signin", "wl.skydrive_update" });

// If you're not connected yet, that means you'll have to log in.
if(result.Status != LiveConnectSessionStatus.Connected)
{
    // This will automatically show the login screen
    result = await auth.LoginAsync(new [] {"wl.basic", "wl.signin", "wl.skydrive_update" });
}

if(result.Status == LiveConnectSessionStatus.Connected)
{
    client = new LiveConnectClient(result.Session);
}

也许上面的过程可以简化,但它对我有用。

现在,如果一切按计划进行,您可以使用客户端。我成功地从流中上传了文件。

假设您已经获得了要发送的文件的Stream(我通过Windows Phone 8上的WinRT文件API IStorageFolder获得了该文件,然后获取文件,然后{{1我只是假设它是一个文本文件,例如:

file.OpenStreamForReadAsync()

实际上,我已经使用了也接受using(stream) { await client.UploadAsync("me/skydrive", "myfile.txt", stream, OverwriteOption.Overwrite); } CancellationToken的重载,主要用于进度通知。

那里应该将文件上传到登录用户的SkyDrive上的主目录。