2012-08-24 83 views
3

我嘗試上傳文本文件到我的skydrive中,或者至少在SD中創建新的文本文件並通過我的Windows 8應用程序中的SkyDrive API編輯它的內容。 我該怎麼做?通過SkyDrive API上傳文件到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)更新?我在問,因爲文檔中的某些方法在dll中不存在(f.e.LiveConnectClient.Upload。只有BackgroundUploadAsync)。

感謝提前的幫助, 邁克爾

回答

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上傳方法。例如,請參閱Live SDK中的Uploading Files example。就像...

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

這裏的另一種方式上傳使用從http://skydriveapiclient.codeplex.com/releases/view/103081

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

     client.LogOn("[email protected]", "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); 
     } 

    } 
下載的SkyDriveApiClient一個控制檯應用程序的文件