Задача такая — я получаю набор байтов, зипую их, и сохраняю в 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 библиотеку. что инетересно с простым текстовым файлом — все работает.
Подскажите ошибку.
Спасибо.