У меня есть PDF-файл в каталоге, который может быть успешно открыт. Я на самом деле превращаюсь в byte [] и архивирую его в потоке памяти и возвращаю его.
Я получил все файлы в заархивированном виде, но при открытии файлов появляется ошибка
"Файл не может быть открыт, либо он не поддерживает тип, либо файл поврежден"
Я меняю pdf файл на байт [],
ArrayList PDFbyteList = new ArrayList();
byte[] bytes = System.IO.File.ReadAllBytes(@"C:\Windows\SysWOW64\config\systemprofile\Desktop\" + PdfFile);
PDFbyteList.Add(bytes);
Затем я изменяю его на zip, используя поток памяти,
public FileResult DownloadMultiplePDFFiles(List<FileResult> list)
{
int count = list.Count();
byte[] file1;
using (MemoryStream ms = new MemoryStream())
{
using (var archive = new ZipArchive(ms, ZipArchiveMode.Create, true))
{
for (var i = 0; i < count; i++)
{
file1 = ObjectToByteArray(PDFbyteList[i]);
string name = list[i].FileDownloadName.Split('.')[0];
name = name + ".pdf";
var zipArchiveEntry = archive.CreateEntry(name, CompressionLevel.Fastest);
using (var zipStream = zipArchiveEntry.Open()) zipStream.Write(file1, 0, file1.Length);
file1 = null;
}
}
//return File(ms.ToArray(), "application/zip", "Reports.zip");
return File(ms.ToArray(), "application/octet-stream", "Reports.zip");
}
}
Список параметров с типом содержимого, именем файла и байтами. Я беру только имя файла отсюда и байтов из списка массивов. Тип содержимого в списке параметров - «application / octet-stream».
Я попытался с "application / octet-stream", а также с "application / zip" с такой же ошибкой.
Надежды на вашу помощь