Ошибка при загрузке списков в spweb - 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();
                                }
                            }
                        }
                }
            }
        }
    }

Ошибка при компиляции

Ошибка Невозможно привести объект типа «Microsoft.SharePoint.SPListItem» к типу «Microsoft.SharePoint.SPFolder».

Ошибка «on line» foreach (SPFolder oFolder в списке. Папки)

Я пытаюсь назначить папку в списке. папки в папку, но по какой-то причине это дает ошибку, упомянутую выше.

Я пытался получить папки из списков, но после прочтения разницы между объектами папок и списков по ссылке, приведенной ниже, я изменил свой код, как указано ниже, ура

введите описание ссылки здесь

private void downloadList(SPObjectData objectData)
    {
        using (SPWeb currentWeb = objectData.Web)
        {
            foreach (SPFolder oFolder in currentWeb.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 Ответ

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

try

foreach (SPFile file in oFolder.Files)

Обновление: если есть проблема, просто внесите в нее индекс:

SPFileCollection collFiles = oFolder.Files;

        long lngTotalFileSize = 0;

        for (int intIndex = 0; intIndex < collFiles.Count; intIndex++)
        {
            lngTotalFileSize += collFiles[intIndex].Length;
        }

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...