0

これは、ここで何度か尋ねられた質問のバリエーションです。一例: ASP.Net MVC3 で byte[] に含まれる画像を表示します。問題は、バイト配列から画像をレンダリングする方法です。

これらすべての質問には、上記のリンクの回答の 1 つに似たアクションがあります。

public FileContentResult Display(string id) {   
byte[] byteArray = GetImageFromDB(id);   
return new FileContentResult(byteArray, "image/jpeg");
}

次のようなイメージ タグを使用します。

<img src="@Url.Action("Display", new { id = Model.Id })" />

これが行われるのは、GET 要求を介してバイト配列を送信することができないためです。ID のみが送信され、Action メソッドでルックアップが可能になります。私はこの部分を理解しています、それは問題ではありません。私がやろうとしているのは、データベースに保存する前に作業を確認できる「プレビュー」ページを作成することです。タイトル、テキスト、画像のレイアウトを確認し、保存するか、戻ってさらに編集するかを決定できます。したがって、オブジェクトがまだデータベースに保存されていないため、「GetImageFromDB(id)」部分は機能しません。

これを達成する方法はありますか、それともバイト配列を一時的にデータベースに保存し、プレビュー ページでその方法でアクセスする必要がありますか?

4

1 に答える 1

1

アップロードしたファイルを後で(プレビューまたはフルサイズの画像として)表示したい場合は、アップロードしたファイルをサーバーのどこかに保存する必要があります。それがデータベースであろうとファイルシステムであろうと、それはあなた次第です。したがって、ファイルがアップロードされたら、一意の Guid を使用してファイルの名前を変更することにより、サーバー上のある場所に一時ファイルとして保存し、この Guid をクライアントに返して、Guid を渡すプレビュー コントローラー アクションへのアクション リンクを作成できるようにします。これにより、一時的な場所からファイルが取得され、クライアントにストリーミングされます。

于 2011-08-03T14:20:08.140 に答える