使用 System.IO.Packaging.Package 在内存中创建 ZIP 文件

Creating a ZIP file in memory with System.IO.Packaging.Package

目前我正在尝试在我的记忆中创建一个 zip 文件。我收集了很多文件

byte[] item1 = File.ReadAllBytes(@"C:.gif");
byte[] item2 = File.ReadAllBytes(@"C:.gif");

在第二步中,我想将它们添加到一个 zip 文件中并保存该 zip 文件

byte[] result = AddFilesToZip(new byte[][] { item1, item2 });
File.WriteAllBytes(@"C:\images.zip", result);

这是我的方法AddFilesToZip:

public static byte[] AddFilesToZip(byte[][] filesToAdd)
{
    using (System.IO.MemoryStream result = new MemoryStream())
    {
    using (System.IO.Packaging.Package zip = System.IO.Packaging.Package.Open(result, System.IO.FileMode.Create))
    {
        for (int i = 0; i < filesToAdd.Length; i++)
        {
            System.IO.Packaging.PackagePart ZipPart = zip.CreatePart(new Uri(i + ".gif"), MediaTypeNames.Application.Zip, System.IO.Packaging.CompressionOption.Normal);
            ZipPart.GetStream().Write(filesToAdd[i], 0, filesToAdd[i].Length);
        }
    }
        return result.ToArray();
    }
}

但是我已经收到一个错误,URI 在 new Uri(i + ".gif") 无效。

Invalid URI: The format of the URI could not be determined.

问题似乎是您需要一个相对 URI,但 Uri class 不知道您正在创建哪种 URI。

试试这个:

new Uri("/" + i + ".gif", UriKind.Relative)