DotNetZipとレスポンスを介してクライアントにZipファイルを送信します

StackOverflow https://stackoverflow.com/questions/1153047

質問

これは私のコードです。

    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();
    }

この時点で、私は単純に、文書内の単語の「テキスト」とジップ内側のreadme.txtドキュメントとzipファイルを返すようにしようとしています。

私は何を取得することはdoucment(予期せぬ)の内側にテキストのないドキュメントのreadme.txt(予想)とfilename.zip(予想される)という名前のzipファイルです。

このコードは、ここでの例からほとんどそのままです。これは他の人がこの正確な問題に遭遇してきた私の事になります。

私の最終目標は、このような何かを行うことです。

    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();
    }

zipファイルにファイルとして3つの文字列を追加しますが、私は今の作業例を得るために解決します。

誰もが何か提案がありますか?

おかげ

- UPDATE-- これは私が新しいプロジェクトにコピーした場合、それは宣伝と同じように動作しますが、私は私のプロジェクトでのDLLの毒性ミックスや一部破損している必要があり、それがあいまいか何かで実際には、動作するはずです。素晴らしい。

役に立ちましたか?

解決

ヒント:

は使用しないでください。

HttpContext.Current.ApplicationInstance.CompleteRequest();    

の代わりに、使用します。

Response.Close();
あなたは、元を使用する場合は、

は、HTMLのジャンクは、zipファイルの一番下に追加されます。

他のヒント

あなたは=私はこれが必要だと思ういくつかのダミーテキストとADDFILE方法で入れてみました。

あなたはCodePlexの上にリンクされている例はAddEntryメソッドは、ストリームからデータを読み込むと言っているようです。あなただけの文字列を渡している - ?多分あなたはあなたのReadmeText文字列を見てStringReaderを作成してみてください、代わりにこれを渡すことができます。

scroll top