从Skydrive获取文件ID [英] Getting file id from Skydrive

查看:87
本文介绍了从Skydrive获取文件ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已将Windows Phone 7中的文本文件保存在特定文件夹中。 现在我想从该特定文件夹中获取该文件,并能够将其下载并将XML反序列化为对象。



但是,我的第一个任务是获取新更新文件的文件ID。 我查看了SDK,它预先填充了文件ID。 我只是想知道如何获得该文件ID。



欢迎所有建议..


我假设有一种方法可以像我这样调用(上载文件时我能够获取文件夹ID),但我真的不确定如何获取文件ID .... / p>

        private void GetFolderProperties_Completed(object sender,LiveOperationCompletedEventArgs e)

        {
$


            if(e.Error == null)

            {

               字典<字符串,对象> folderData =(词典<串,对象>)e.Result;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;列表与LT;对象> folders =(List< object>)folderData [" data"];



          &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; foreach(文件夹中的对象项目)

                {

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;字典<字符串,对象>夹=(词典<串,对象>)项;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;如果(文件夹["名称"]的ToString()== skyDriveFolderName。)

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; skyDriveFolderID =文件夹[" id"]。ToString();

               &NBSP; }


               如果(skyDriveFolderID ==的String.Empty)

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;字典<字符串,对象> skyDriveFolderData =新词典<串,对象>();

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP; skyDriveFolderData.Add(" name",skyDriveFolderName);

                &NBSP;&NBSP;&NBSP;&NBSP; //您可以添加文件夹说明,但由于某种原因它不起作用。

             &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; //folderData.Add("description","文件夹从我的WP7应用程序分离的存储器中存储的文件");

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; client.PostCompleted + = new EventHandler< LiveOperationCompletedEventArgs>(CreateFolder_Completed);

               &NBSP;&NBSP;&NBSP;&NBSP;&NBSP; client.PostAsync(" me / skydrive",skyDriveFolderData);
$
               &NBSP; }
               否则

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; UploadFile();

            }
           否则为
            {

                MessageBox.Show(e.Error.Message);

            }
        }

解决方案

我不知道这是不是最好的方法,但我一直在使用以下内容:

 public async void DownloadFile(LiveConnectClient liveConnectClient,string filename,string folderId)
{
var result = await liveConnectClient.Get(folderId +" / files" );
dynamic res = result.Result;
列表< object> itms = res.data;

foreach(动态itm in itms)
{
string name = itm.name;
if(name == filename)
{
using(var stream = await liveConnectClient.Download(itm.id +" / content"))
{
//在这里做事......
}
}
}
}




I have saved a text file from the Windows Phone 7 in a specific folder.  Now I would like to get that file from that specific folder and be able to download it and deserialize the XML into an object.

However, my first task it to get the file id of that newly updated file.  I looked at the SDK and it has a file id prepopulated.  I'm just wondering how do I get that file ID.

All suggestions are welcome..

I'm assuming there is some sort of method that I would call like this (I was able to get the folderId when uploading file), but I'm really not sure how I can get the file id....

        private void GetFolderProperties_Completed(object sender, LiveOperationCompletedEventArgs e)
        {

            if (e.Error == null)
            {
                Dictionary<string, object> folderData = (Dictionary<string, object>)e.Result;
                List<object> folders = (List<object>)folderData["data"];

                foreach (object item in folders)
                {
                    Dictionary<string, object> folder = (Dictionary<string, object>)item;
                    if (folder["name"].ToString() == skyDriveFolderName)
                        skyDriveFolderID = folder["id"].ToString();
                }

                if (skyDriveFolderID == string.Empty)
                {
                    Dictionary<string, object> skyDriveFolderData = new Dictionary<string, object>();
                    skyDriveFolderData.Add("name", skyDriveFolderName);
                    //You can add a folder description, but for some reason it does not work.
                    //folderData.Add("description", "Folder for storing files from my WP7 app isolated storage.");
                    client.PostCompleted += new EventHandler<LiveOperationCompletedEventArgs>(CreateFolder_Completed);
                    client.PostAsync("me/skydrive", skyDriveFolderData);
                }
                else
                    UploadFile();
            }
            else
            {
                MessageBox.Show(e.Error.Message);
            }
        }

解决方案

I don't know if this is the best way but I have been using something like the following:

        public async void DownloadFile(LiveConnectClient liveConnectClient, string filename, string folderId)
        {
            var result = await liveConnectClient.Get(folderId + "/files");
            dynamic res = result.Result;
            List<object> itms = res.data;

            foreach (dynamic itm in itms)
            {
                string name = itm.name;
                if (name == filename)
                {
                    using (var stream = await liveConnectClient.Download(itm.id + "/content"))
                    {
                        // Do things here...
                    }
                }
            }
        }



这篇关于从Skydrive获取文件ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆