ASP.NETアプリケーションからの* .csvのような、エクスポート/ダウンロードのためのテキストファイルを作成したいと思います。私はResponse.TransmitFileについて知っていますが、実際にサーバー上にファイルを作成して保存することなく、この作業を行いたいと思います。それは可能ですか? 誰かがそういったことをしていますか?ASP.NETでは、ブラウザに文字列コンテンツをファイルにダウンロードさせるにはどうすればよいですか? (C#)
答えて
まだ保存していないファイルは、文字列変数またはMemoryStreamです。しかし、大量のデータの場合は、おそらくメモリ内にすべて保持したくないでしょう。一度それを持っていたら、この "ファイル"で何をしたいですか?
私はそれをダウンロードしたいと考えています –
「エクスポートするファイルを作成する」と言うと、ブラウザにダウンロード可能にしたいと思っています。その場合、ここに例があります。
public void btnGo_Click (Object sender, EventArgs e)
{
Response.Clear();
string fileName= String.Format("data-{0}.csv", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss"));
Response.ContentType = "text/csv";
Response.AddHeader("content-disposition", "filename=" + fileName);
// write string data to Response.OutputStream here
Response.Write("aaa,bbb,ccc\n");
Response.End();
}
は引用:RFC 4180
あなたはResponse.OutputStreamに直接使う書き込み、適切なコンテンツタイプ、およびコンテンツディスポジションヘッダーを設定することができます。
ああ、それは悪くないです。あなたのASPXページのPage_Loadのは、これを行うには:あなたの「ファイル」のXMLの場合
Response.ContentType = "text/xml";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Write(/* your text goes here */);
上記は一例ですが、それは何もすることができ、からとファイルをPDFに優れています。 GoogleまたはLive経由で検索できるContentTypeを更新するだけです。
あなたはすごく素敵です... =) – JasonRShaver
は、このサンプルをお試しください:
protected void Button1_Click(object sender, EventArgs e)
{
Response.ContentType = "text/csv";
Response.AddHeader("content-disposition", "attachment; filename=download.csv");
Response.Write("your,csv,file,contents");
Response.End();
}
あなたはカスタムHTTPハンドラ(IHttpHandler
を実装するクラス)を記述を見て、単にweb.configファイルに登録したいと思います。設定方法の良い例は、this article on MSDNを参照してください。
ここでは、一部のCSVデータのマークアップを実装するための実装方法の基本的な例を示します。
using System.Web;
public class MyCsvDocumentHandler : IHttpHandler
{
public static string Data
{
get;
set;
}
public MyCsvDocumentHandler()
{
}
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/csv"; // Set the MIME type.
context.Response.Write(Data); // Write the CSV data to the respone stream.
}
public bool IsReusable
{
// To enable pooling, return true here.
// This keeps the handler in memory.
get { return false; }
}
}
おそらく少し簡単です。この選択肢は、ASHX handlerページを使用することです。コードはほぼ同じです。
あなたのウェブを煩わせることなくIHTTPHandlerをリンクすることも可能です(文書化されていない場合)。config - ASHXの 'page'タイプは配線を提供します。 –
(これまではグラフィカルなボタンを動的に生成するためにこのテクニックを使用しましたが、これはかなり便利だと思います)。 –
@鉄人:まあ、絶対に。場合によっては、HTTPハンドラ(IHttpHandler)がより望ましいのですが、これは少し柔軟性がありますが、この場合ASHXも同様です。 – Noldorin
- 1. ブラウザにファイルをダウンロードさせるにはどうすればいいですか?
- 2. C#で文字列をPascalCase文字列に変換するにはどうすればよいですか?
- 3. C#でzipファイルをダウンロードするにはどうすればよいですか?
- 4. C++/Arduino:文字列/文字配列をバイトに変換するにはどうすればよいですか?
- 5. ブラウザにswfファイルの新しいバージョンを再ダウンロードさせるにはどうすればいいですか?
- 6. Express.jsがブラウザにファイルをダウンロードさせないようにするにはどうすればよいですか?ブラウザで
- 7. C++で入力ファイルを文字列配列に読み込むにはどうすればよいですか?
- 8. Cの文字配列から文字列を取得するにはどうすればよいですか?
- 9. ASP.NET MVCでシリアル化された文字列を処理するにはどうすればよいですか?
- 10. ファイルからXML文字列を文字列に読み込むにはどうすればよいですか?
- 11. ブラウザから動的に生成されたファイルをダウンロードするにはどうすればいいですか?
- 12. 文字列内の\文字を/文字に変更するにはどうすればよいですか?
- 13. ユーザーがブラウザでファイルをダウンロードするタイミングを検出するにはどうすればよいですか?
- 14. クエリ文字列に基づいてコンテンツを変更するにはどうすればよいですか?
- 15. 文字列内の文字列を文字列内で渡すにはどうすればよいですか?
- 16. C#で文字列を文例に変換するにはどうすればよいですか?
- 17. 文字列の一部を文字列に追加するにはどうすればよいですか?
- 18. 文字列配列で各文字に個別にアクセスするにはどうすればよいですか?
- 19. C++の文字列から文字を削除するにはどうすればよいですか?
- 20. Cで多次元配列に文字列を格納するにはどうすればよいですか?
- 21. Cで文字列を整列した形式にフォーマットするにはどうすればよいですか?
- 22. C#で文字列をバイト配列に変換するにはどうすればよいですか?
- 23. C++でchar配列を文字列に変換するにはどうすればよいですか?
- 24. 文字列にバックスラッシュ(\)を書くにはどうすればよいですか?
- 25. JSに文字配列を認識させるにはどうすればよいですか?
- 26. 文字列を文字配列に変換するにはどうすればよいですか?
- 27. 文字列/数字を文字列に追加するにはどうすればよいですか?
- 28. CまたはC++で文字列インターンを行うにはどうすればよいですか?
- 29. JSONオブジェクトのコンテンツをJSON文字列にエンコードするにはどうすればよいですか?
- 30. 文字列の長さを150文字に制限するにはどうすればよいですか?
あなたはもう少し具体的になりますか?文字列を取り出してクライアント上のファイルに保存し、サーバー上にファイルを作成しないことを意味しますか? –