2012-12-01 136 views
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我有错误:

The resource cannot be found. Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

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

我究竟做错了什么?

+6

是在您的网址的根内容?您正在请求/内容中的图片,但是当您上传图片时,您已将其上传到〜/ content/...他们是否是同一位置? – Brettski

+0

为什么在这个问题上有两个反对票? – Brettski

+0

我同意Brettski。这是一个完全有效的问题。从我+1。 –

回答

0

我松动。

图像保存在ImageModel.ResizeAndSave并添加扩展名名为.jpg

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

事实证明,该文件filename.jpg.jpeg

2

如果您在虚拟目录中的IIS中运行,则应该预先指定虚拟目录。你永远不应该在你的视图中硬编码网址。始终使用助手:

<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 

所以,你可以看到,你永远不应该硬编码的网址。同样代表您的JavaScript文件中的网址。处理ASP.NET MVC应用程序中的URL时始终使用助手。

+0

这对我没有帮助 – Mediator

+0

但是,您应该使用助手,如我的答案中所示,否则当您在IIS中部署时,代码将会中断。 –

+0

是的,我明白了。谢谢 – Mediator

相关问题