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

蜗牛博士

目前,我正在尝试在内存中创建一个zip文件。我收集了很多文件

byte[] item1 = File.ReadAllBytes(@"C:\1.gif");
byte[] item2 = File.ReadAllBytes(@"C:\2.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")

无效的URI:无法确定URI的格式。

约翰

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

尝试以下方法:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用System.IO.Compression在内存中创建ZIP存档

使用OpenXML SDK的System.IO.Packaging的Azure函数运行时绑定失败

使用System.IO.Directory.CreateDirectory在网络驱动器中创建一个文件夹

使用System.IO.Compression创建的zip文件无效

使用System.IO.Compression验证zip文件

从字节(在内存中使用任意编码的文本)在内存中创建zip文件

C#使用zip档案System.IO.Compression创建zip文件

在内存中创建一个Zip文件

System.IO.IOException:使用System.IO.Path.GetTempFileName()时,“文件存在”-分辨率?

如何使用io在内存中生成像文件一样的对象数据流?

使用Tempfile在Rails中创建一个zip文件

使用 System.IO.File.ReadAllText 反轉 .txt 文件

System.IO.IOException: '进程无法访问该文件,因为它正被另一个进程使用

使用文件IO创建矩阵

IO异常-文件正在由另一个进程使用(创建目录后无法打开文件)

使用C#中的System.IO.Compression压缩内存中的对象

使用Java的文件IO

如何从文件字节开始在内存中创建一个zip文件?

使用System.IO.File.Move时自动创建文件夹

创建一个zip文件,并使用maven将其添加到war文件中

创建多个csv文件并使用rails在一个zip归档文件中全部下载

使用rapture-io从base64字符串创建一个临时文件

System.IO.Compression.Zip存档内存管理

类型为“ System.IO.IOException”的未处理异常。该进程无法访问该文件,因为该文件正在被另一个进程使用

如何使用System.IO.Abstractions中的FileSystemWatcher监视模拟文件系统?

在Unity3d中处理文件时使用System.IO安全吗?

在驱动器根目录中的文件上使用FileInfo时,System.IO异常

如何让程序读入数字而忽略“;” 在使用“System.IO”库时的 notepad.txt 文件中

System.IO.IOException:该进程无法访问文件“ .txt”,因为它正在被另一个进程使用