zip doc file - получаю битый архив
От: Alex Dav Россия  
Дата: 01.08.11 14:39
Оценка:
Задача такая — я получаю набор байтов, зипую их, и сохраняю в Base64 string — отправляю на другую машину — там из строки получается массив байтов (все еще зипованых) и сохраняется как zip архив, но при открытии такого архива вылетает предупреждение — "неизвестный метод, нет файлов для извлечения".
Вот тестовый код написал:

FileStream file = new FileStream("test.doc", FileMode.Open);
byte[] bytes = new byte[file.Length];
int numBytesToRead = (int)file.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
    // Read may return anything from 0 to numBytesToRead.
    int n = file.Read(bytes, numBytesRead, numBytesToRead);

    // Break when the end of the file is reached.
    if (n == 0)
        break;

    numBytesRead += n;
    numBytesToRead -= n;
}
file.Close();


string str = "";

using (MemoryStream ms = new MemoryStream())
{
    using (ZipOutputStream gzs = new ZipOutputStream(ms))
    {
        //gzs.UseZip64 = UseZip64.Off;
        ZipEntry entry = new ZipEntry(Path.GetFileName(file.Name));
        gzs.PutNextEntry(entry);
        //using (StreamWriter sw = new StreamWriter(gzs))
        //{
        //    sw.Write(Encoding.UTF8.GetString(bytes));
        //}
        gzs.Write(bytes, 0, bytes.Length);

    }
    str = Convert.ToBase64String(ms.ToArray());
}

FileStream zipfile = new FileStream("test.zip", FileMode.Create);
byte[] zipbytes = Convert.FromBase64String(str);
zipfile.Write(zipbytes, 0, zipbytes.Length);
zipfile.Close();



Для того что бы в архиве оставалось имя файла использую SharpZipLib библиотеку. что инетересно с простым текстовым файлом — все работает.
Подскажите ошибку.
Спасибо.
zip
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.