NancyFXのデータベースからbyte []の画像をWeb出力ストリームに出力するのには苦労しています。この時点で表示するにはサンプルコードを十分に近づけていません。誰かがこの問題に取り組み、スニペットを投稿できるかどうか疑問に思っていましたか?私は基本的には、私のデータベースに格納されたバイト配列からimage/jpegを返し、物理ファイルではなくウェブに出力したいだけです。NancyFxで画像ハンドラを作成する方法
18
A
答えて
27
のために(別のコンストラクタを提供してもStreamResponse
あり拡張子)は、ちょうどあなたがすることができ、TheCodeJunkieの答え@上構築します非常に簡単にこのような "バイト配列の応答"を構築:
public class ByteArrayResponse : Response
{
/// <summary>
/// Byte array response
/// </summary>
/// <param name="body">Byte array to be the body of the response</param>
/// <param name="contentType">Content type to use</param>
public ByteArrayResponse(byte[] body, string contentType = null)
{
this.ContentType = contentType ?? "application/octet-stream";
this.Contents = stream =>
{
using (var writer = new BinaryWriter(stream))
{
writer.Write(body);
}
};
}
}
あなたは構文Response.AsXを使用したい場合、それが上に単純な拡張メソッドです:あなただけ使用することができ、あなたのルートに続いて
public static class Extensions
{
public static Response FromByteArray(this IResponseFormatter formatter, byte[] body, string contentType = null)
{
return new ByteArrayResponse(body, contentType);
}
}
:
Response.FromByteArray(myImageByteArray, "image/jpeg");
あなたはコンテンツネゴシエーションを使用してバイト配列を使用するプロセッサを追加することもできますが、その簡単なサンプルを追加しました。this gist
8
Nancyから新しいResponse
オブジェクトを返すことができます。それはContent
プロパティがタイプAction<Stream>
でありますので、あなただけの
var r = new Response();
r.Content = s => {
//write to s
};
を含む、(あなたがMimeTypes.GetMimeType
を使用して、名前を渡すことができContentType
プロパティを設定することを忘れないでください、そのストリームに、あなたのバイト配列を書き込みデリゲートを作成することができますResponse
から継承し、あなたのルートでreturn Response.AsStream(..)
を使用することができますビットよりよい構文..ちょうど構文キャンディー)
11
Inあなたのコントローラは、イメージのバイトストリームでResponse.FromStreamを返します。これは以前のバージョンのnancyではAsStreamと呼ばれていました。
Get["/Image/{ImageID}"] = parameters =>
{
string ContentType = "image/jpg";
Stream stream = // get a stream from the image.
return Response.FromStream(stream, ContentType);
};
関連する問題
- 1. 2つの画像で画像を作成する方法
- 2. 非画像データからグレースケール画像を作成する方法
- 3. ブートストラップで別の画像の上に画像スライドを作成する方法
- 4. アンドロイドアプリで画像のレイヤーを作成する方法は?
- 5. ウィンドウ上で画像ポップアップを作成する方法Tkinter python3
- 6. CSS3でレスポンシブCSSポジショニング画像を作成する方法
- 7. CSSで画像にグラデーションアニメーションを作成する方法
- 8. 'pandas.DataFrame.plot'で作成した画像を保存する方法は?
- 9. Paperclipで画像ファイルのサムネイルを作成する方法は?
- 10. 水平スクロールで画像ギャラリーを作成する方法
- 11. スマートな方法で画像のプレビューを作成/改善する
- 12. Unity 5でテクスチャ画像のスライドショーを作成する方法
- 13. Flexで画像とコンテンツのスライダを作成する方法は?
- 14. 静的な画像サイズでリストビューを作成する方法Xamarin
- 15. iOS Swift:画像でテキストフィールドを作成する方法
- 16. Androidスタジオでカスタム画像ボタンを作成する方法は?
- 17. webpackで画像ディレクトリとサブディレクトリを作成する方法。
- 18. アンドロイドでレイアウトを作成する方法(添付画像参照)
- 19. プログラムで画像を作成する最も良い方法
- 20. カードビューで画像スライドを作成する方法
- 21. レスポンシブ画像の作成方法
- 22. アニメーション画像のダウンロードリンクの作成方法
- 23. カスタムタイル画像の作成方法
- 24. 画像付きラジオボタンの作成方法
- 25. アンドロイドで画像(画像操作)をスクランブルする方法は?
- 26. 画像を圧縮して画像ファイルを作成する方法Uri
- 27. jqueryを作成する方法画像ソースを取得する
- 28. スライドショーで画像を作る方法
- 29. はC#マップを作成します(店のレイアウト計画)ラベル、マーカーでローカル画像(JPG、PNG)を形成し、ハンドラ
- 30. ロスレスの方法でJPEG画像からピラミッドタイルTIFFを作成する方法
ソリューションを拡張していただきありがとうございます。 – sethxian
リクエストのバイト配列レスポンスをブラウザキャッシュにする方法はありますか?ハンドラは同じURLに対して再び動作しないように? – Azadrum
それはひどいです、そのキャッシュはメモリ内のバイトです。最小限のメモリを使用して直接ストリームできませんか? – Todd