перебирая через Интернет загрузку всех папок, списков, документов в нем и его вложенной сети - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь загрузить все (документы, списки, папки) веб-сайта и его вложенных веб-узлов и его вложенных веб-узлов (если существует) и т. Д., Я могу сделать это для одной сети, но она не работает для вложенные в него, код приведен ниже,

   private void downloadList(SPObjectData objectData)
    {
        using (SPWeb currentWeb = objectData.Web)
        {
            foreach (SPList list in currentWeb.Lists)
            {
                    foreach (SPFolder oFolder in list.Folders)
                    {
                        if (oFolder != null)
                        {
                            foreach (SPFile file in oFolder.files)
                            {
                                if (CreateDirectoryStructure(tbDirectory.Text, file.Url))
                                {
                                    var filepath = System.IO.Path.Combine(tbDirectory.Text, file.Url);
                                    byte[] binFile = file.OpenBinary();
                                    System.IO.FileStream fstream = System.IO.File.Create(filepath);
                                    fstream.Write(binFile, 0, binFile.Length);
                                    fstream.Close();
                                }
                            }
                        }
                }
            }
        }
    }

1 Ответ

0 голосов
/ 28 декабря 2011

Это потому, что вы хотите сделать это рекурсивно для дочерних сетей

foreach(SPWeb oWeb in currentWeb.Webs){

downloadList(oWeb); //use same logic you used above to get all the stuff from the sub web

}

Итак, для вашего рекурсивного метода было бы так:

//notice I overloaded
private void downloadList(SPWeb oWeb){
//get subwebs of subwebs
foreach(SPWeb oWeb in currentWeb.Webs){

   downloadList(oWeb); 

}
foreach (SPList list in oWeb.Lists)
            {
                    foreach (SPFolder oFolder in list.Folders)
                    {
                        if (oFolder != null)
                        {
                            foreach (SPFile file in oFolder.files)
                            {
                                if (CreateDirectoryStructure(tbDirectory.Text, file.Url))
                                {
                                    var filepath = System.IO.Path.Combine(tbDirectory.Text, file.Url);
                                    byte[] binFile = file.OpenBinary();
                                    System.IO.FileStream fstream = System.IO.File.Create(filepath);
                                    fstream.Write(binFile, 0, binFile.Length);
                                    fstream.Close();
                                }
                            }
                        }
                }
            }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...