2

サーバー側のフォルダーに画像を保存しています。サーバーには画像のパスがあります。クライアントはそのフォルダーにアクセスできませんが、サーバーはアクセスできます。クライアントにパーミッションがないためブラウザが表示できないため、imgタグのsrc属性にURLを付けることができません。

この場合、これらの画像を表示するにはどうすればよいですか? サーバーは画像をメモリに保存し、それらの画像をクライアント側でレンダリングできると言われましたが、どうすればそれを行うことができますか? MVC 4、c# を SQL Server 2008 r2 で使用しています

4

3 に答える 3

1

画像をフォルダーに保存する場合はFile()、物理ファイル パスを使用してメソッドを直接使用できます。

public ActionResult Image(string id)
{
    var dir = Server.MapPath("/Images");
    var path = Path.Combine(dir, id + ".jpg");
    return base.File(path, "image/jpeg");
}
于 2013-04-17T15:35:49.783 に答える
1

Fileパスと MIME タイプを受け取るオーバーロードを使用できます。コントローラーアクションで:

// Sub the appropriate mime type for the image
return File(thePathFromTheDb, "image/jpg"); 

http://msdn.microsoft.com/en-us/library/dd492492(v=vs.108).aspx

または、画像データが DB から取得された場合は、コントローラー アクションで次のようにします。

byte[] bytes = GetImageBytesFromDatabase();  // Sub your code to get bytes
return File(bytes, "image/jpg"); // Sub the appropriate mime type for the image

http://msdn.microsoft.com/en-us/library/dd460208(v=vs.108).aspx

于 2013-04-17T15:34:37.673 に答える
0

コントローラーを指すように画像をリンクする必要があります。次に、コントローラFileResultは正しい MIME タイプの をブラウザに返す必要があります。

シーケンスは次のとおりです。

  1. ブラウザリクエストページ
  2. 戻るリンクのあるサーバーの戻りページ (例: <img src='/files/get/123.png'/>)
  3. ブラウザーが戻るリンクで画像をリクエストする
  4. サーバーはイメージを読み取りますディスクDB は、コントローラー ( FilesController) アクション呼び出し ( Get) にFileResult戻り値の型で応答しています。画像形式に基づいて、またはimage\pngにMIME タイプを設定することを忘れないでください。gifjpeg
  5. サーバーが画像をブラウザに返す
于 2013-04-17T15:35:46.523 に答える