3

ユーザーが画像をアップロードすると、その画像はファイル システムに保存されますが、公開されている範囲外に保存されます。

アイテムのリストを表示しています。各アイテムには画像が関連付けられています。

実際のファイルが wwwroot フォルダーの外に保存されている場合、どうすれば画像を表示できますか? つまり、公開されていません。

4

2 に答える 2

7

アクション メソッドはサーバー上で実行されているため、アクセス許可を持つ任意のファイルにアクセスできます。wwwrootファイルはフォルダー内にある必要はありません。どの画像を取得するかをアクション メソッドに指示するだけです。

例えば:

<img src="/mycontroller/myaction/123">

アクションは次のようになります。

public FileResult MyAction(int id)
{
    var dir = "c:\myimages\";
    var path = Path.Combine(dir, id + ".jpg");

    return new FileStreamResult(new FileStream(path, FileMode.Open), "image/jpeg");
}

intID は、誰かがパスを挿入してドライブ/共有上の別のファイルにアクセスするのを防ぐためのものであることに注意してください。

于 2013-08-20T16:05:26.373 に答える
3

これには 2 つの方法があります。

オプション 1、この別のディレクトリを指す仮想ディレクトリを作成できます。これは、別の URL を介して画像にアクセスできることを意味します。たとえば、「OtherImages」という名前の仮想ディレクトリを作成すると、URL は次のようになります。

http://www.mywebsite.com/otherimages/myimage.jpg

オプション 2、HttpHandler絶対パスから画像をロードできる単純なものを作成し、これを応答で出力できます。HttpHandlersと動的に生成される画像について読んでください。

于 2013-08-20T16:06:51.893 に答える