使用 dotnetzip 压缩文件,打开时文件已损坏

2023-11-30

我从字节数组在控制器中创建了一个 zip 文件,并将该 zip 文件作为文件结果返回。当我下载 zip 文件并解压该文件时,它已损坏。我这样做:

byte[] fileBytes =array
MemoryStream fileStream = new MemoryStream(fileBytes);
MemoryStream outputStream = new MemoryStream();
fileStream.Seek(0, SeekOrigin.Begin);

using (ZipFile zipFile = new ZipFile())
{
    zipFile.AddEntry(returnFileName, fileStream);
    zipFile.Save(outputStream);
}

outputStream.Position = 0;

FileStreamResult fileResult = new FileStreamResult(outputStream, System.Net.Mime.MediaTypeNames.Application.Zip);
fileResult.FileDownloadName = returnFileName + ".zip";

return fileResult;

您可能不幸遇到了其中一个未解决的错误点网压缩。有例如取决于文件大小的问题(https://dotnetzip.codeplex.com/workitem/14087).

很遗憾,点网压缩有一些关键问题,该项目似乎不再得到积极维护。更好的替代方案是使用 SharpZipLib(如果您遵守其基于 GPL 的许可证),或者其中之一zlib 的 .NET 端口.

如果您使用的是 .NET 4.5,您可以使用System.IO.Compression命名空间。以下示例可以在文档中找到ZipArchive class:

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var zipToOpen = 
                new FileStream(@"c:\tmp\release.zip", FileMode.Open))
            {
                using (var archive = 
                     new ZipArchive(zipToOpen, ZipArchiveMode.Update))
                {
                    var readmeEntry = archive.CreateEntry("Readme.txt");
                    using (var writer = new StreamWriter(readmeEntry.Open()))
                    {
                            writer.WriteLine("Information about this package.");
                            writer.WriteLine("========================");
                    }
                }
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 dotnetzip 压缩文件,打开时文件已损坏 的相关文章

随机推荐

  • 从平面 Modelica 代码中提取类型/类名

    我想知道是否已经存在从平面 Modelica 代码中提取所有变量及其相应类型 分别为类名 的可能性 例如 给定扁平 Modelica 模型的摘录 constant Integer nSurfaces 8 constant Integer c
  • 使用 DOMDocument 从网站抓取所有图像

    我基本上想要得到ALL使用 DOMDocument 的任何网站中的图像 但由于某些我还不知道的原因 我什至无法加载我的 html url http
  • Elasticsearch 未在浏览器中运行

    我已经在 Ubuntu 中下载了 Elasticsearch 8 1 安装成功后 当我执行 curl u elastic https 127 0 0 1 9200 k 它显示了预期的弹性搜索响应 但当我击中http 127 0 0 1 92
  • 如何使用 Fiddler 将 XML POST 到 ASP.NET WebAPI

    给定以下 ASP NET WebAPI 我尝试使用 Fiddler 发送测试 POST 但无法让它工作 无论我发送什么 我总是只看到没有数据发送到服务信息 Imports System Web Http Imports System Net
  • SQLITE 将大量行转置为列

    我有一个这样订购的数据库 ID Subject Value 1 Subj1 Val1 1 Subj2 Val2 2 Subj1 Val3 2 Subj5 Val4 等等 ID 数以千计 受试者数以万计 我想找到这个矩阵的转置 我怎么做 如果
  • 从 mcrypt_decrypt 到 openssl_decrypt

    我有一个问题 我想用 open ssl 解密替换对 mcrypt 的函数调用 但输出是混合的 这是 mcrypt 实现 效果很好 decrypted trim mcrypt decrypt MCRYPT RIJNDAEL 128 subst
  • 在 JPA 上映射 Oracle XMLType (EclipseLink)

    我们的项目有一些特殊要求 其中之一是从 Oracle 10g 数据库的 XMLType 数据库列获取数据 我们找到了一个使用 JDBC 的简单解决方案 但它会使应用程序有点混乱 因为所有数据访问都是通过 JPA 完成的 使用的实现是 Ecl
  • 使用 HTML5 创建音频可视化工具

    我正在尝试使用我在网上找到的示例对在线广播流使用音频可视化这一页 然而 与发现的问题类似这个帖子 我的音频文件 即使使用本地文件进行测试 就是没有声音 当然可视化也没有任何作用 我的 HTML 如下
  • 在 Firefox 和 Chrome 中呈现 HTML

    div style height 20 width 70 div div gt div style height 20 width 30 div 在 Chrome 中 这两个部分位于同一行 但是两个div之间有一个小差距 但在 Firefo
  • 根据多个数据块的列值改变点颜色 gnuplot

    我的问题非常类似于this其一 从中我学到了很多东西 但是 我正在使用多个数据块 如下所示 1 2 3 4 5 6 7 8 0 4 3 0 4 5 7 2 3 0 4 5 0 5 6 7 我将它们绘制如下 plot file txt ind
  • 为什么 Python 创建的 MD5 哈希与在 shell 中使用 echo 和 md5sum 创建的 MD5 哈希不同?

    Python MD5 哈希值与 shell 上的 md5sum 命令创建的哈希值不同 为什么 gt gt gt import hashlib gt gt gt h hashlib md5 gt gt gt h update mystring
  • SSIS版本检查

    这是我在这个论坛上的第一篇文章 我一直坚持使用 Microsoft SSIS 软件包 但我真的不知道如何打败它 我已经提到了 SSIS 包文件 我尝试在 SQL Server 2005 上使用 Business Intelligence D
  • 在 contenteditable div 中设置插入符位置

    Intro 当编辑 contenteditable DOM 对象的内容时 不同的浏览器有不同的行为 例如 Firefox 18 0 创建一个新段落 p 或换行符 br 在某些情况下 Chrome 24 会创建一个 p div 为了解决这个问
  • 如何修复 iOS 12 Safari Cors 预检错误?

    我试图更好地理解 COR 因为我们的 Web 应用程序的一些用户抱怨说 自从他们升级到 iOS 12 后 他们收到了预检错误 来自网络检查器的错误 Error Preflight response is not successful Err
  • 导出可运行的 JAR 文件不支持 UTF-8 编码 - Java Eclipse

    我使用 eclipse IDE 制作了这个小型 Java 程序 我已将工作区设置为支持 UTF 8 并且程序在从 eclipse 执行时运行良好 该程序的一部分是将一些数据写入文件 需要 UTF 8 因为它是阿拉伯语 我需要导出一个可运行的
  • java.io.IOException:找不到 Main [动态功能模块] 的 PROCESSED_RES 输出

    将动态模块添加到已有 6 种风格的多模块项目中 出现这个错误 ERROR Unable to resolve dependency for dynMod debug compileClasspath Could not resolve pr
  • 如何检查指针是否指向数组或单个 int 或 char

    我想知道一个指针是否指向一个array或单身integer 我有一个需要两个指针的函数 int and char 作为输入并判断指针是否指向array或单身integer pointer pointer 4 pointer1 pointer
  • 如何导入 XML 表 Google Sheets

    所以我有一个谷歌表 我想通过 ergast com API 导入 F1 排位赛和比赛结果 我只需要表中的驱动程序和位置信息 但如果更容易的话 我很乐意导入整个表 我尝试过 IMPORTHTML IMPORTFEED IMPORTXML 但无
  • 使用网络抓取提供数据框

    我正在尝试将一些刮取的值附加到数据框中 我有这个代码 import time import requests import pandas import pandas as pd from bs4 import BeautifulSoup f
  • 使用 dotnetzip 压缩文件,打开时文件已损坏

    我从字节数组在控制器中创建了一个 zip 文件 并将该 zip 文件作为文件结果返回 当我下载 zip 文件并解压该文件时 它已损坏 我这样做 byte fileBytes array MemoryStream fileStream new