1

画像をアップロードしています:

[HttpPost]
public ActionResult Create(PlaceViewModel model)
{
    if (ModelState.IsValid)
    {
        string fileName = Guid.NewGuid().ToString() + ".jpg";
        string serverPath = Server.MapPath("~");
        string imagesPath = serverPath + "Content\\Uploads\\";
        string thumbPath = imagesPath + "Thumb\\";
        string fullPath = imagesPath + "Full\\";
        ImageModel.ResizeAndSave(thumbPath, fileName, model.ImageUploaded.InputStream, 100, true);
        ImageModel.ResizeAndSave(fullPath, fileName, model.ImageUploaded.InputStream, 600, true);

        model.Image = fileName;

        var place = new Place();
        model.ConvertToData(place);

        _placeRepository.Add(place);
        _placeRepository.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(model);
}

ファイルがアップロードされ、ディスクに物理的に存在します

私はhtmlから画像を呼んでいます:

<img height="100px" src="/Content/Uploads/Thumb/833c4384-884d-4250-982c-d5df0fa875ef.jpg" width="100px"/>

しかし、私はこの画像を見ていません。

電話をかけるlocalhost:23354/Content/Uploads/Thumb/833c4384-884d-4250-982c-d5df0fa875ef.jpgとエラーが発生します:

リソースが見つかりません。説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に使用できなくなった可能性があります。次のURLを確認し、スペルが正しいことを確認してください。

リクエストされたURL:/Content/Uploads/Thumb/833c4384-884d-4250-982c-d5df0fa875ef.jpg

私は何が間違っているのですか?

4

2 に答える 2

2

IISの仮想ディレクトリで実行している場合は、仮想ディレクトリを事前に指定する必要があります。ビューにURLをハードコーディングしないでください。常にヘルパーを使用します。

<img height="100px" src="@Url.Content("~/Content/Uploads/Thumb/833c4384-884d-4250-982c-d5df0fa875ef.jpg")" width="100px"/>

これで、仮想ディレクトリなしでローカルで実行している場合、ヘルパーは以下を生成します。

/Content/Uploads/Thumb/833c4384-884d-4250-982c-d5df0fa875ef.jpg

また、仮想ディレクトリ内のIISにアプリケーションをアップロードすると、ヘルパーは正しいURLをもう一度生成します。

/AppName/Content/Uploads/Thumb/833c4384-884d-4250-982c-d5df0fa875ef.jpg

ご覧のとおり、URLをハードコーディングしないでください。同じことがjavascriptファイルのURLを表します。ASP.NET MVCアプリケーションでURLを処理するときは、常にヘルパーを使用してください。

于 2012-12-01T08:52:04.387 に答える
0

私は緩みます。

保存された画像ImageModel.ResizeAndSaveと名前拡張子「.jpg」を追加

newImage.Save(savePath + fileName + ".jpg", ImageFormat.Jpeg);

ファイルはfilename.jpg.jpegであることがわかります

于 2012-12-01T09:33:28.550 に答える