Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复在c中使用Ionic zip下载大文件时zip文件损坏的错误#_C#_Ionic Zip - Fatal编程技术网

C# 如何修复在c中使用Ionic zip下载大文件时zip文件损坏的错误#

C# 如何修复在c中使用Ionic zip下载大文件时zip文件损坏的错误#,c#,ionic-zip,C#,Ionic Zip,获取错误文件在c#中使用Ionic.zip下载大文件时发生损坏错误。当用户提取该文件时,将显示已损坏的文件。当我用更小的文件做同样的事情时,它工作得很好。甚至在创建zip文件时也没有给出任何错误。我正在创建一个zip文件中添加的现有pdf文件的zip文件。可能有5个文件或1000个文件,每个文件的最小容量为10 MB 我尝试过阈值和谷歌提供的所有其他选项,但没有找到任何解决方案 using (ZipFile zip = new ZipFile()) { zip.AlternateEnco

获取错误文件在c#中使用Ionic.zip下载大文件时发生损坏错误。当用户提取该文件时,将显示已损坏的文件。当我用更小的文件做同样的事情时,它工作得很好。甚至在创建zip文件时也没有给出任何错误。我正在创建一个zip文件中添加的现有pdf文件的zip文件。可能有5个文件或1000个文件,每个文件的最小容量为10 MB

我尝试过阈值和谷歌提供的所有其他选项,但没有找到任何解决方案

using (ZipFile zip = new ZipFile())
{
    zip.AlternateEncodingUsage = ZipOption.AsNecessary;
    zip.CompressionLevel = Ionic.Zlib.CompressionLevel.Level9;
    //zip.AddDirectoryByName("Files");

    for (int i = 0; i < dt.Rows.Count; i++)
    {
        filePath = Convert.ToString(dt.Rows[i]["filePath"]);
        fileIds.Add(Convert.ToInt32(dt.Rows[i]["fileid"]));
        string fileFullName = Convert.ToString(dt.Rows[i]["fileName"]);
        string fName = Convert.ToString(dt.Rows[i]["fileName"]).Split('_')[1];

        //ExceptionLogging c1 = new ExceptionLogging("filePath = " + filePath + " fileFullName = " + fileFullName +
        //    " fName = " + fName);
        //c1.ErrorLog(HttpContext.Current.ApplicationInstance.Server.MapPath("~/Logs/"));


        if (!fileNamesList.Contains(fileFullName.Split('_')[0]))
        {
            //ExceptionLogging c2 = new ExceptionLogging("In if condition -- filePath = " + filePath);
            //c2.ErrorLog(HttpContext.Current.ApplicationInstance.Server.MapPath("~/Logs/"));

            zip.AddFile(filePath, "Files");
            fileNamesList.Add(fileFullName.Split('_')[0]);
        }
        else
        {
            filePath = filePath.Substring(0, filePath.Length - 4) + "_" + fName;
            //filePath = filePath.Split('.')[0] + "_" + fName;
            zip.AddFile(filePath, "Files");
            fileNamesList.Add(fileFullName);

            //ExceptionLogging c3 = new ExceptionLogging("In else condition -- filePath = " + filePath + " fileFullName = " + fileFullName);
            //c3.ErrorLog(HttpContext.Current.ApplicationInstance.Server.MapPath("~/Logs/"));
        }
        //zip.AddFile(filePath, "Files");
    }

    Response.Clear();
    Response.BufferOutput = false;
    string zipName = String.Format("ZipFile-{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss"));
    Response.ContentType = "application/zip";
    Response.AddHeader("content-disposition", "attachment; filename=" + zipName);
    zip.Save(Response.OutputStream);
    //Response.End();
    HttpContext.Current.ApplicationInstance.CompleteRequest();
}
使用(ZipFile zip=new ZipFile())
{
zip.AlternateenCodinguage=ZipOption.as必要时;
zip.CompressionLevel=Ionic.Zlib.CompressionLevel.Level9;
//zip.AddDirectoryByName(“文件”);
对于(int i=0;i

我应该能够下载zip中的大型文件。

我的解释需要的空间比评论更多:

在x32平台上,
.Net
的可用ram限制使程序能够压缩较大的文件。尝试暂时切换到x64,这可能会解决您的问题

我还建议对LOH(大对象堆)进行研究,因为我知道它将在将来处理此类场景时派上用场:


我的解释需要比评论更多的空间:

在x32平台上,
.Net
的可用ram限制使程序能够压缩较大的文件。尝试暂时切换到x64,这可能会解决您的问题

我还建议对LOH(大对象堆)进行研究,因为我知道它将在将来处理此类场景时派上用场: