swapnil kamle Ответов: 1

Загрузите несколько файлов из библиотеки документов, присутствующей в SharePoint 2013, с помощью csom(c#)


I am trying to download multiple files from document library present in SharePoint 2013 document library. To achieve this I have created a cloud service in windows azure and fetching all the files info using CSOM and zipping it using sharpzip library as there are large no of files and file size are large(100 MB etc.) I am not zipping files in to memory stream because its taking too much time to zip files in memory stream. I am streaming zip file on the fly. And starts download, its working fine when I run the code on my local machine but when I host the service on Azure. It will corrupts the file and showing a message showing below. Its working fine for small files but not for large one. Following is the error showing when opening file.

Сжатая Zip - папка недопустима.

Ниже приведен код. Пожалуйста, дайте мне знать, где я ошибаюсь в коде

Строки Имя_zip-Файла = "Document.zip";
пробовать
{
String[] DocumentIDArray = null;
if (DocumentID != null)
{
DocumentIDArray = DocumentID.Split(',');
}
строки URL = URL-адрес_сайта;
строка username = ConfigurationSettings.AppSettings["имя пользователя"].Метод toString();
SecureString securecreds = новая строка безопасности();
var password = ConfigurationSettings.AppSettings["Пароль"].Метод toString();
foreach (char c в пароле)
{
securecreds.AppendChar(c);
}
/*Скачать Код*/
Свойство HttpContext.Тока.Ответ.Четкий();
Свойство HttpContext.Тока.Ответ.BufferOutput = false;
Свойство HttpContext.Тока.Ответ.AddHeader("content-disposition", string.Формат("вложение;имя файла={0}", ZipFileName));
Свойство HttpContext.Тока.Ответ.ContentType = "приложение/Zip";
MemoryStream strm=Новый Поток памяти();
ICSharpCode.SharpZipLib.Zip.ZipOutputStream ZipOutputStream = новый ICSharpCode.SharpZipLib.Zip.ZipOutputStream(HttpContext.Current.Ответ.Выходной поток);
ZipOutputStream.SetLevel(0); //0-9, 9-самый высокий уровень сжатия
ZipOutputStream.UseZip64 = ICSharpCode.SharpZipLib.Zip.UseZip64.Off;
byte[] buffer = новый байт[65536];
/*Конец кода загрузки*/
SharePointOnlineCredentials creds = новый SharePointOnlineCredentials(имя пользователя, securecreds);
использование (var clientContext = new Microsoft.служба SharePoint.Клиент.Метод clientcontext(URL-адрес))
{
метод clientcontext.Учетные данные = деньги закончились;
список ВАР = метод clientcontext.Веб.Списки.GetByTitle(DocumentLibraryName);
for (int i = 0; i < DocumentIDArray.Длина; i++)
{
Microsoft.служба SharePoint.Клиент.ListItem listitem = список.GetItemById(DocumentIDArray[i]);
clientContext.Load(listitem.Файл);
}
метод clientcontext.Метод executequery();
for (int i = 0; i < DocumentIDArray.Длина; i++)
{
Microsoft.служба SharePoint.Клиент.ListItem listitem = список.GetItemById(DocumentIDArray[i]);
var fileRef = listitem.File.ServerRelativeUrl;
var fileInfo = Microsoft.служба SharePoint.Клиент.Файл.OpenBinaryDirect(clientContext, fileRef);
ВАР именем = (строки)элемент listitem.Файл.Название;
ICSharpCode.SharpZipLib.Zip.ZipEntry entry = новый ICSharpCode.SharpZipLib.Zip.ZipEntry(ICSharpCode.SharpZipLib.Zip.ZipEntry.CleanName(имя файла));
ZipOutputStream.PutNextEntry(запись);

int count = fileInfo.Stream.Read(buffer, 0, buffer.Длина);
while (count > 0)
{
ZipOutputStream.Запись(буфер, 0, счетчик);
count = fileInfo.Stream.Read(buffer, 0, buffer.Длина);
если (!Свойство HttpContext.Тока.Ответ.IsClientConnected)
{
перерыв;
}
Свойство HttpContext.Тока.Ответ.Промывать();
}

}
ZipOutputStream.Закрывать();
Свойство HttpContext.Тока.Ответ.Промывать();
Свойство HttpContext.Тока.ApplicationInstance.CompleteRequest();

}


}
поймать (исключение бывший)
{
Свойство HttpContext.Тока.ApplicationInstance.CompleteRequest();
}

1 Ответов

Рейтинг:
1

Member 14579943

привет свапнил,
Вы получили решение этой проблемы?