0

我在 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库用于此目的。

4

1 回答 1

1

鉴于

_formerRepository.InsertFormerFileAsBinary

需要字节[],那么这应该工作:

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

供参考:从流中创建字节数组

于 2016-11-17T11:19:02.050 回答