我尝试将文本文件上传到我的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;
}
但我收到错误 “提供的请求无效。无法更新根SkyDrive文件夹。” 如果我写“me / skydrive /”之类的东西,我会得到 “提供的URL无效。不支持请求的路径”。 方法LiveConnectClient.PutAsync只允许我更新现有属性(但不包括它的内容)。
应如何正确完成?
顺便说一句 - LCDC上的内容(http://msdn.microsoft.com/en-us/library/live/hh826531.aspx)是否已更新?我问,因为dlls中不存在文档中的某些方法(例如,LiveConnectClient.Upload。只有BackgroundUploadAsync)。
提前感谢您的帮助, 迈克尔
答案 0 :(得分: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
}
答案 1 :(得分:2)
您应该在LiveConnectionClient上使用Upload方法。例如,请参阅Uploading Files example中的Live SDK。有点像...
LiveOperationResult fileOperationResult =
await client.Upload("me/skydrive", /*file name here*/, /*file stream here*/);
答案 2 :(得分: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);
}
}