如何将pdf存储在zip文件中,而无需将其保存在本地

本文关键字:保存 存在 存储 pdf zip 文件 | 更新日期: 2023-09-27 18:18:16

我在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库。

如何将pdf存储在zip文件中,而无需将其保存在本地

鉴于

_formerRepository.InsertFormerFileAsBinary

接受byte[],那么这应该可以工作:

 using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) {
        item.Open().CopyTo(ms);
        _formerRepository.InsertFormerFileAsBinary(ms.ToArray());
 }

作为参考:从流

创建字节数组