0

アプリケーションフォルダー内ではなく、C:\tmp\Somename\somepic.jpg にある画像を表示する際に問題が発生しました。検索して試してみましたが、役に立ちませんでした。

私がこれまでに持っていること(この問題に関連していると思います)は次のとおりです。

public ActionResult Edit(int? id)
{
    if (id.HasValue)
    {
        var model = GetItems(id.Value);

        ViewBag.Images = Directory.GetFiles(WebConfigurationManager.AppSettings["itemPath"] + model.ContentId.ToString().Substring(0, 3) + "\\", model.ContentId + "*.jpg");
        return View(model);
    }

    return View("Notfound", "Home");
}

そしてビューで

<div class="row">
@foreach (var item in ViewBag.Images)
{
    <img src="@Url.Content(item)" alt="hello"/>


}

どんな助けでも大歓迎です。

4

1 に答える 1

2

この問題は、URL で絶対ファイル パスを使用していることが原因のようです。

<img src="c:\tmp\myimage.jpg" />

これは、次の 3 つの理由で機能しません。

  • URI はバックスラッシュではなくスラッシュを使用する
  • 一般に、ブラウザーは、理解できないプロトコルを使用して URL を処理する方法を知りません (ただし、便宜上、ブラウザーに入力したときにローカル ファイルを表示することはサポートしています)。
  • ユーザーがそのような Web ページを開くと、ブラウザーは Web サーバー上ではなく、ローカル マシン上のファイルに移動します。これは巨大なセキュリティ ホールであるため、ブラウザはこれを禁止しています。

これは、 src絶対パスの問題でもカバーされています

于 2012-09-21T13:42:34.873 に答える