DPM20 Ответов: 1

Как заархивировать несколько файлов в один zip-файл в ASP.NET с#


Всем Привет,

Мне нужен ваш совет о том, как создать один zip-файл, который сжимает несколько файлов, а затем отправить электронное письмо с созданным файлом в качестве приложения.

Я использую библиотеку DotNetZip для создания zip-файлов.

Я могу отправить несколько zip-файлов по электронной почте, но мне нужен один zip-файл для всех файлов. Пожалуйста, смотрите код ниже,

Заранее спасибо!!

Что я уже пробовал:

foreach (KeyValuePair & lt;string, byte []="" & gt; doc in attachmentColl)
{
Привязанность привязанность;
Потоке MemoryStream потоке MemoryStream = новая потоке MemoryStream();
использование (ZipFile zip = новый ZipFile())
{
застежка-молния.AddEntry (doc. Key + ". xls", doc.Ценность);
молния.Сохранить(потоке MemoryStream);
поток памяти.Позиция = 0;
вложение = новый крепления(потоке MemoryStream, новое значение contentType("приложения/молния")) { Имя = док.Ключ +". zip" };
}
сообщение.Вложения.Добавить (вложение);
}
сообщение.Для.Добавить(для);
сообщение.Body = mailbody;
сообщение.IsBodyHtml = true;
SmtpClient smtpClient = новый SmtpClient("smtp.XXXXXXXX.net");
smtpClient.Отправить сообщение);

OriginalGriff

И что же? Что происходит, чего вы не ожидали, или не происходит, что вы ожидали?
Где ты застрял?
Какая помощь вам нужна?

DPM20

Спасибо за ваш ответ.

Опубликованный код сгенерирует электронное письмо с несколькими zip-файлами в качестве приложения, но мне нужен один zip-файл, который сжимает все файлы.

1 Ответов

Рейтинг:
0

OriginalGriff

Цитата:
Опубликованный код сгенерирует электронное письмо с несколькими zip-файлами в качестве приложения, но мне нужен один zip-файл, который сжимает все файлы.

Итак...вам нужно, чтобы мы рассказали вам,как переместить создание zip-файла за пределы цикла и заполнить его внутри?

Это то, что студент третьей недели на своем первом компьютерном курсе должен быть в состоянии решить самостоятельно за пару минут...
using (ZipFile zip = new ZipFile())
    {
    foreach (KeyValuePair<string, byte[]> doc in attachmentColl)
        {
        zip.AddEntry(doc.Key + ".xls", doc.Value);
        }
    zip.Save(memoryStream);
    MemoryStream memoryStream = new MemoryStream();
    memoryStream.Position = 0;
    Attachment attachment = new Attachment(memoryStream, new ContentType("application/zip")) { Name = doc.Key + ".zip" };
    message.Attachments.Add(attachment);
    message.To.Add(toAddress);
    message.Body = mailbody;
    message.IsBodyHtml = true;
    SmtpClient smtpClient = new SmtpClient("smtp.XXXXXXXX.net");
    smtpClient.Send(message);
    }