DotNetZipとレスポンスを介してクライアントにZipファイルを送信します
質問
これは私のコードです。
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
を作成してみてください、代わりにこれを渡すことができます。
所属していません StackOverflow