3

我尝试通过 Windows 8 应用程序中的 SkyDrive API 将文本文件上传到我的 skydrive 或至少在 SD 中创建新的文本文件并编辑其内容。我怎样才能做到这一点?

我试图做这样的事情:

        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) 上的内容是否更新?我问是因为文档中的某些方法在 dll 中不存在(fe LiveConnectClient.Upload。只有BackgroundUploadAsync)。

提前感谢您的帮助,迈克尔

4

3 回答 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                
}
于 2012-08-25T09:54:55.357 回答
2

您应该在 LiveConnectionClient 上使用 Upload 方法。例如,请参阅Live SDK中的上传文件示例。就像是 ...

LiveOperationResult fileOperationResult =
     await client.Upload("me/skydrive", /*file name here*/, /*file stream here*/);
于 2012-08-24T16:42:26.270 回答
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);
        }

    }
于 2014-02-15T18:45:32.527 回答