C# 如何将文件下载/上载到用户onedrive
我在一个高中俱乐部,我们在那里创建windows应用商店应用程序。我负责的代码允许用户从在线onedrive存储中下载文件,或上传文件。到目前为止,我已成功登录该用户,并获得了对onedrive的访问权限,并使用以下代码显示用户名:C# 如何将文件下载/上载到用户onedrive,c#,msdn,live-connect-sdk,onedrive,C#,Msdn,Live Connect Sdk,Onedrive,我在一个高中俱乐部,我们在那里创建windows应用商店应用程序。我负责的代码允许用户从在线onedrive存储中下载文件,或上传文件。到目前为止,我已成功登录该用户,并获得了对onedrive的访问权限,并使用以下代码显示用户名: private async void LoadProfile() { bool connected = false; string text = "No Error:"; t
private async void LoadProfile()
{
bool connected = false;
string text = "No Error:";
try
{
var authClient = new LiveAuthClient();
LiveLoginResult result = await authClient.LoginAsync(new List<string>() {"wl.signin", "wl.skydrive"});
if (result.Status == LiveConnectSessionStatus.Connected)
{
connected = true;
var connectClient = new LiveConnectClient(result.Session);
var meResult = await connectClient.GetAsync("me");
dynamic meData = meResult.Result;
Textblock_profilename.Text = meData.name;
}
}
catch (LiveAuthException ex)
{
//Set text to corresponding error
text = ex.ToString();
}
catch (LiveConnectException ex)
{
//Set text to corresponding error
text = ex.ToString();
}
if (text[0].ToString() != "N")
{
var dialog = new Windows.UI.Popups.MessageDialog(text);
await dialog.ShowAsync();
}
}
但是,此代码会引发以下错误:
这是MSDN教程的直接内容,无法解决如何修复错误。我最好的猜测是我遗漏了一个“using”语句,但我无法找出我遗漏了什么。谢谢你的帮助 确保您已更新为使用Live SDK 5.6二进制文件。如果您在OneDrive集成方面有任何其他问题,请务必告知我们 您正在使用的路径——“skydrive/documents/enter_path”——是您要下载的文档的友好路径吗?例如,您是否正在尝试下载文档文件夹中名为“enter_path”的文件?@jeaniems否,我正在将其替换为实际的文件路径“skydrive/documents/textTest.txt”由于我所犯的错误,我没有考虑路径是问题。您正在LoadProfile中声明您的CelpTeCube变量,并且无法从下载按钮单击事件访问。这就是导致错误2的原因。对于错误#1,您使用的是哪个版本的SDK?@ginach-Oh,这对于错误2是有意义的!我只是在学习如何做到这一点,最好的解决方案是以某种方式使连接客户端全局化,还是在事件中实例化另一个连接客户端?对于我的live SDK,我正在使用5.5.0.0,我注意到一个新版本发布了,我应该升级到5.6吗?是的,升级应该解决您的其他问题。您所参考的文档是针对5.6版本的,自5.5.Hi@RGregg以来,方法和对象发生了一些更改,您是否知道是否可以从C#中的WinForms桌面应用程序下载表单并将文本文件上载到我的OneDrive帐户?Aeron,这是绝对可能的。Windows Live SDK中有一个标记为“桌面”的SDK,您可以从C#WinForms调用该SDK。@RGregg是否可以使用foreach下载onedrive上特定文件夹中的所有文件,以循环浏览文件夹中的未知文件,并使用其分配的名称将其保存到Windows应用商店的本地存储中?@Jerin,这应该是可能的。这只是一个枚举文件并将其下载到应用程序本地存储中的某个位置的问题。
private async void Button_downloadFile_Click(object sender, RoutedEventArgs e)
{
try
{
LiveDownloadOperation operation = await connectClient.CreateBackgroundDownloadAsync("skydrive/documents/enter_path");
var result = await operation.StartAsync();
//DO SOMETHING WITH RESULT HERE
}
catch
{
// Handle any errors.
}
}