Asp.net 下载的zip文件已损坏

Asp.net 下载的zip文件已损坏,asp.net,zip,download,Asp.net,Zip,Download,我正在使用以下代码下载一个zip文件 protected void btnDownloadNow_Click(object sender, EventArgs e) { if (cblFiles.SelectedItem == null) { RegisterStartupScript("as","You must select one or more files to download."); } var

我正在使用以下代码下载一个zip文件

protected void btnDownloadNow_Click(object sender, EventArgs e)
    { if (cblFiles.SelectedItem == null)
        {

            RegisterStartupScript("as","You must select one or more files to download.");

        }


        var downloadFileName = string.Format("Transmittal.zip", DateTime.Now.ToString("yyyy-MM-dd-HH_mm_ss"));
        Response.ContentType = "application/zip";
        Response.AddHeader("Content-Disposition", "filename=" + downloadFileName);


        using (var zip = new ZipFile())
        {

            if (!string.IsNullOrEmpty(txtZIPPassword.Text))
            {
                zip.Password = txtZIPPassword.Text;


                zip.Encryption = EncryptionAlgorithm.WinZipAes128;
            }


            var readMeMessage = string.Format("Your ZIP file {0} contains the following files:{1}{1}", downloadFileName, Environment.NewLine);


            foreach (ListItem li in cblFiles.Items)
                if (li.Selected)
                {

                    readMeMessage += string.Concat("\t* ", li.Text, Environment.NewLine);

                    zip.AddFile(li.Value, "Your Files");
                }



            zip.AddEntry("README.txt", readMeMessage, Encoding.ASCII);


            zip.Save(Response.OutputStream);

        }
我在同一页上有以下javascript

function CheckAllPDF(value) {
            var elementRef = document.getElementById("<%= cblFiles.ClientID %>");
            var checkBoxArray = elementRef.getElementsByTagName('input');

            var checkBoxLabelArray = elementRef.getElementsByTagName('label');

            var checkedValues = '';

            for (var i = 0; i < checkBoxArray.length; i++) {

                var checkBoxRef = checkBoxArray[i];
                var checkBoxLabelRef = checkBoxLabelArray[i];
                var stringt = checkBoxLabelRef.innerHTML;
                var match = stringt.indexOf(".pdf");
                if (value == true) {
                    document.getElementById("<%=Checkbox1.ClientID %>").checked = false;
                    document.getElementById("<%=cc.ClientID %>").checked = false;
                    if (match != -1) {
                        checkBoxRef.checked = true;

                    }
                    else {
                        checkBoxRef.checked = false;
                    }
                }
                else {
                    // checkBoxRef.checked = false;
                    if (match != -1) {

                        checkBoxRef.checked = false;
                        document.getElementById("<%=Checkbox1.ClientID %>").checked = false;
                    }
                    else {
                        // checkBoxRef.checked = true;
                    }
                }

            }
        }
函数CheckAllPDF(值){
var elementRef=document.getElementById(“”);
var checkBoxArray=elementRef.getElementsByTagName('input');
var checkBoxLabelArray=elementRef.getElementsByTagName('label');
var checkedValues='';
对于(var i=0;i

我的问题是下载的zip文件由于上述javascript代码而损坏。当我从页面中删除javascript时,zip文件工作正常。为什么此javascript会导致这样的错误?这是ASP.NET代码,而不是javascript

我看不到所有必要的代码,但是

您的HTTP响应正变得一团糟。在发送文件之前清除HTTPResponseHeader,然后刷新,并确保结束HTTPContext响应

大概是这样的:

    //clear your headers
    Response.Clear();

    var downloadFileName = string.Format("Transmittal.zip", DateTime.Now.ToString("yyyy-MM-dd-HH_mm_ss"));
    Response.ContentType = "application/zip";
    Response.AddHeader("Content-Disposition", "filename=" + downloadFileName);

    //Write (Send) your file
    Response.Write(  ... );
    Response.Flush();
    HttpContext.Current.Response.End();

这是ASP.NET代码,不是javascript

我看不到所有必要的代码,但是

您的HTTP响应正变得一团糟。在发送文件之前清除HTTPResponseHeader,然后刷新,并确保结束HTTPContext响应

大概是这样的:

    //clear your headers
    Response.Clear();

    var downloadFileName = string.Format("Transmittal.zip", DateTime.Now.ToString("yyyy-MM-dd-HH_mm_ss"));
    Response.ContentType = "application/zip";
    Response.AddHeader("Content-Disposition", "filename=" + downloadFileName);

    //Write (Send) your file
    Response.Write(  ... );
    Response.Flush();
    HttpContext.Current.Response.End();