Frage

Das ist mein Code

    private void sendToClient(Dictionary<string, string> reportDic)
    {
        Response.Clear();
        Response.BufferOutput = false;
        String ReadmeText = "some text";
        Response.ContentType = "application/zip";
        Response.AddHeader("content-disposition", "filename=" + "filename.zip");
        using (ZipFile zip = new ZipFile())
        {
            zip.AddEntry("Readme.txt", ReadmeText);
            zip.Save(Response.OutputStream);
        }
        Response.Close();
    }

ich an dieser Stelle einfach ich versuche, eine ZIP-Datei mit dem readme.txt Dokument in der Reißverschluss mit den Worten „etwas Text“ innerhalb des Dokuments zurückzukehren.

Was ich bekommen, ist eine Zip-Datei namens filename.zip (erwartet) mit einem Dokument readme.txt (erwartet) ohne Text innerhalb des doucment (unerwarteten).

Dieser Code ist fast wörtlich aus dem Beispiel hier . Das macht mich, was andere Menschen in genau dieses Problem ausgeführt haben.

Mein Endziel ist es, so etwas zu tun.

    private void sendToClient(Dictionary<string, string> reportDic)
    {
        Response.BufferOutput = false;
        Response.ContentType = "application/zip";
        Response.AddHeader("content-dispostion", "filename=text.zip");
        Response.ContentEncoding = Encoding.Default;
        Response.Charset = "";
        using (ZipFile zip = new ZipFile())
        {
            foreach (string key in reportDic.Keys)
            {
                zip.AddEntry(key, reportDic[key]);
            }
            zip.Save(Response.OutputStream);
        }
        Response.Close();
    }

fügen Sie drei Zeichenfolgen als Dateien in der Zip-Datei, aber ich werde für immer das Beispiel für jetzt arbeiten begleichen.

Wer irgendwelche Vorschläge?

Danke

- UPDATE-- Dies sollte in der Tat arbeiten, wenn ich es in ein neues Projekt kopieren, nur so funktioniert, habe ich eine giftige Mischung aus DLLs oder einer Korruption in meinem Projekt haben muss, das ist dunkel oder so etwas. Wunderbar.

War es hilfreich?

Lösung

Hinweis:

nicht verwenden

HttpContext.Current.ApplicationInstance.CompleteRequest();    

Verwenden Sie stattdessen

Response.Close();

Wenn Sie die frühere verwenden, werden Sie HTML Junk auf den Grund Ihrer ZIP-Datei angehängt bekommen.

Andere Tipps

Haben Sie versucht, in der AddFile Methode mit einigem Dummy-Text setzen = Ich denke, das erforderlich ist.

Das Beispiel, das Sie auf CodePlex verbunden scheint aus einem Strom der AddEntry Methode liest Daten zu sagen. Sie sind nur in einem String übergeben - vielleicht könnten Sie versuchen, ein StringReader Erstellen an Ihrem ReadmeText Zeichenfolge zu suchen, und übergeben diese in anstatt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top