2016-03-23 3 views
0

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レスポンスを持っているおかげ

+1

(ほとんどのダウンロードサイトがそうであるように)あなたが秒のx量の後にダウンロードをトリガーダウンロードページにユーザーをリダイレクトすることができ、言っ

は、Excelは、XLSファイルをエクスポートするか、CSVすることができますか?それがcsvであり、ページデータを使用してExcelにエクスポートする場合は、クライアント側で簡単に実行できます。もう1つのことは、バイトをクライアントに送信してクライアント側で処理することだけです。 – Rick

+0

明確にするには、問題があるHttpContextではありません。むしろ、それは応答を閉じる/終了しています。 – mason

+0

@Rickエクスポートファイルはxlsです。私はデータをエクスポートする別の方法に取り組んでいますが、私のクライアントがダウンロードする必要があるファイルの問題が残ります。私はエクスポートとダウンロードが多くのブラウザで動作することを確認する必要があるので、ダウンロード属性に頼ることはできません。私はファイル/データをバイトに変換してそれをクライアント側に送ることに慣れていませんが、私はそれを調べます。返信いただきありがとうございます。 – KyleS

答えて

1

、あなたはそれがファイルのダウンロードや別のWebページになりたい場合にのみ選択することができます。

HttpContextを使用するかどうかは関係ありません。

+0

返事をありがとう。ダウンロードを処理するためにユーザーを別のページにリダイレクトしようとしましたが、その方法でIEに問題がありました。私は問題が何かを覚えていないが、私は上司が自分の行動様式が気に入らず、現行の方法が好まれていないことを覚えている。私は間違ったことをした可能性があるので、私は再びそれを調べなければならないでしょう。また、HttpContextの誤解を解消してくれてありがとう。 – KyleS

関連する問題