У меня есть zip-файл внутри zip-файла, а внутри внутреннего zip-файла у меня есть документ Excel и PDF / Tif.
В настоящее время я разрабатываю инструмент, который читает все эти файлы и сохраняет их в базе данных. Раньше я сначала сохранял оба файла в папке, но поскольку в zip-файлах содержится множество файлов, я получил исключение из-за отсутствия места на диске.
Итак, теперь я хочу попытаться сохранить файлы в базе данных напрямую, не зная расположение папки.
// Path.Combine(exportPathNoZip,entry.FullName) --> \unzip\Files1\Files1.ZIP
using (ZipArchive archive = ZipFile.OpenRead(Path.Combine(exportPathNoZip,entry.FullName)))
{
// These are the files inside the zip file and contain the Excel and the image
foreach (ZipArchiveEntry item in archive.Entries)
{
// Save image to database
if (item.FullName.EndsWith(".tif", StringComparison.OrdinalIgnoreCase) ||
item.FullName.EndsWith(".tiff", StringComparison.OrdinalIgnoreCase) ||
item.FullName.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
{
byte[] file = File.ReadAllBytes(?????);
_formerRepository.InsertFormerFileAsBinary(file);
}
}
}
Но это не сработает, потому что File.ReadAllBytes()
потребуется путь. Так что я могу сделать? Хранение файлов локально даст мне исключение из-за нехватки места на диске, и без него у меня нет пути.
Имейте в виду, что я хотел бы использовать библиотеку System.IO.Compression
только для этого.