通过SkyDrive API上传文件到SkyDrive

3

我想在我的Windows 8应用程序中通过SkyDrive API上传文本文件或至少创建新的文本文件并编辑其内容。我该如何做呢?

我尝试过以下方法:

        LiveConnectClient client = new LiveConnectClient(session);
        var fileData = new Dictionary<string, object>();
        fileData.Add("name", "new_file.txt");
        try
        {
            LiveOperationResult fileOperationResult = await client.PutAsync("me/skydrive", fileData);
            this.infoTextBlock.Text = fileOperationResult.ToString();
        }
        catch (LiveConnectException exception)
        {
            this.infoTextBlock.Text = exception.Message;
        }

但是我遇到错误 “提供的请求无效。无法更新根SkyDrive文件夹。” 如果我写类似“me/skydrive/”这样的东西,我会得到 “提供的URL无效。请求的路径''不受支持”。 LiveConnectClient.PutAsync方法只允许我更新现有属性(但不是它的内容)。
应该如何正确地完成?
顺便说一下- LCDC(http://msdn.microsoft.com/en-us/library/live/hh826531.aspx)上的内容是否已更新?我之所以问是因为文档中的某些方法在dlls中不存在(例如LiveConnectClient.Upload。只有BackgroundUploadAsync)。
提前感谢您的帮助, 迈克尔
3个回答

3

接近正确,但是正如我所写的:我无法使用client.upload方法,因为LiveConnectClient类中不包含它。这就是为什么我询问网站内容更新的原因。

无论如何,我已经得到了答案:

//create a StorageFile (here is one way to do that if it is stored in your ApplicationData)
StorageFile file = awaitApplicationData.Current.LocalFolder.GetFileAsync("yourfilename.txt");

try {
   client = new LiveConnectClient(session);
   LiveOperationResult operationResult = await client.BackgroundUploadAsync("me/skydrive", file.Name, file, OverwriteOption.Overwrite);
}
catch (LiveConnectException exception) {
  //handle exception                
}

2
您应该在LiveConnectionClient上使用Upload方法。例如,请参见上传文件示例中的Live SDK。类似于...
LiveOperationResult fileOperationResult =
     await client.Upload("me/skydrive", /*file name here*/, /*file stream here*/);

0

以下是一个使用从http://skydriveapiclient.codeplex.com/releases/view/103081下载的SkyDriveApiClient从控制台应用程序上传文件的另一种方法。

    static void Main(string[] args)
    {
        var client = new SkyDriveServiceClient();

        client.LogOn("YourEmail@hotmail.com", "password");
        WebFolderInfo wfInfo = new WebFolderInfo();

        WebFolderInfo[] wfInfoArray = client.ListRootWebFolders();

        wfInfo = wfInfoArray[0];
        client.Timeout = 1000000000;

        string fn = @"test.txt";
        if (File.Exists(fn))
        {
            client.UploadWebFile(fn, wfInfo);
        }

    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接