Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过skydrive API将文件上载到skydrive_C#_File Upload_Windows 8_Microsoft Metro_Onedrive - Fatal编程技术网

C# 通过skydrive API将文件上载到skydrive

C# 通过skydrive API将文件上载到skydrive,c#,file-upload,windows-8,microsoft-metro,onedrive,C#,File Upload,Windows 8,Microsoft Metro,Onedrive,我尝试将文本文件上传到我的skydrive,或者至少在SD中创建新文本文件,并通过Windows 8应用程序中的skydrive API编辑其内容。 我该怎么做 我试着这样做: LiveConnectClient client = new LiveConnectClient(session); var fileData = new Dictionary<string, object>(); fileData.Add("name", "n

我尝试将文本文件上传到我的skydrive,或者至少在SD中创建新文本文件,并通过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;
        }
LiveConnectClient=newliveconnectclient(会话);
var fileData=newdictionary();
添加(“name”,“new_file.txt”);
尝试
{
LiveOperationResult fileOperationResult=await client.PutAsync(“me/skydrive”,fileData);
this.infoTextBlock.Text=fileOperationResult.ToString();
}
捕获(LiveConnectException异常)
{
this.infoTextBlock.Text=exception.Message;
}
但我有一个错误 “提供的请求无效。无法更新根SkyDrive文件夹。” 如果我写一些像“me/skydrive/”的东西,我会 提供的URL无效。不支持请求的路径“”。 方法LiveConnectClient.PutAsync只允许更新现有属性(但不允许更新其内容)

应该如何正确地做

顺便说一句,LCDC上有内容吗(http://msdn.microsoft.com/en-us/library/live/hh826531.aspx)更新?我这样问是因为有些方法(在文档中)在DLL中不存在(f.e.LiveConnectClient.Upload,只有BackgroundUploadAsync)

提前谢谢你的帮助,
Micheal

您应该在LiveConnectionClient上使用上载方法。例如,请参见中的。类似于

LiveOperationResult fileOperationResult =
     await client.Upload("me/skydrive", /*file name here*/, /*file stream here*/);

关闭,但正如我所写的:我不能使用client.upload方法,因为LiveConnectClient类不包含它。这就是为什么我问有关网站内容更新的问题

无论如何,我得到了一个答案:

//创建一个StorageFile(如果它存储在ApplicationData中,这里有一种方法)
StorageFile file=awaitApplicationData.Current.LocalFolder.GetFileAsync(“yourfilename.txt”);
试一试{
客户端=新的LiveConnectClient(会话);
LiveOperationResult operationResult=await client.BackgroundUploadAsync(“me/skydrive”,file.Name,file,OverwriteOption.Overwrite);
}
捕获(LiveConnectException异常){
//处理异常
}

以下是使用从下载的SkyDrive客户端从控制台应用程序上载文件的另一种方法

    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);
        }

    }