asp.net Webサイトからファイルをダウンロードしてエクスポートすることに関して多くの質問がありますが、それらはすべて同じ回答で終わります。私のウェブサイトでは、ファイルをダウンロードしてExcelスプレッドシートにデータをエクスポートするオプションをユーザに提供しています。HttpContextを使用しないASP.netのdowload/export
public void ExcelExport(System.Data.DataTable dtData, String strFileName)
{
try
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + strFileName);
HttpContext.Current.Response.ContentType = GetMIMEType(Path.GetExtension(strFileName));
HttpContext.Current.Response.Write(BuildStringWriter(dtData));
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Close();
}
catch (Exception ex)
{
throw new Exception("ExcelExport() Failed: " + ex.Message);
}
}
これは私がデータをエクスポートするために呼び出すと、私のダウンロード方法はほとんど同じである方法である:現在、私は解決策のみんなを使用していますと、このようになりますどの提供するようです。問題は、エクスポート/ダウンロードが完了したらどちらか一方を閉じる方法がないため、スピナーまたは待機中のメッセージを表示できないことです。エクスポート/ダウンロード後に実行したい他のタスクもありますが、現在できません。
私の質問は、私のクライアントがHttpContextを使わずにファイルをダウンロードしてデータをエクスポートするための別の手段ですか?また、私はダウンロードしなければならないDLLを参照していないほうがいいでしょう。
すべてのHTTP要求は一つだけHTTPレスポンスを持っているおかげ
(ほとんどのダウンロードサイトがそうであるように)あなたが秒のx量の後にダウンロードをトリガーダウンロードページにユーザーをリダイレクトすることができ、言っ
は、Excelは、XLSファイルをエクスポートするか、CSVすることができますか?それがcsvであり、ページデータを使用してExcelにエクスポートする場合は、クライアント側で簡単に実行できます。もう1つのことは、バイトをクライアントに送信してクライアント側で処理することだけです。 – Rick
明確にするには、問題があるHttpContextではありません。むしろ、それは応答を閉じる/終了しています。 – mason
@Rickエクスポートファイルはxlsです。私はデータをエクスポートする別の方法に取り組んでいますが、私のクライアントがダウンロードする必要があるファイルの問題が残ります。私はエクスポートとダウンロードが多くのブラウザで動作することを確認する必要があるので、ダウンロード属性に頼ることはできません。私はファイル/データをバイトに変換してそれをクライアント側に送ることに慣れていませんが、私はそれを調べます。返信いただきありがとうございます。 – KyleS