我在ASP.NET MVC 4.5.2中有一个上传函数如何将图片上传到〜/ Uploads /.
当我想用以下代码显示图像时:
<img src="@item.ImagePath" alt="Image" />
我获得:
<img src="c:\users\yanni\documents\visual studio 2015\Projects\MyProject\MyProject\Uploads/references/postfinance.PNG" alt="Image" />
我的问题是要知道如何用“〜/ Uploads / filename.ext”替换c:\ users ...。
也许重要的是指定:在我的数据库中,我有完整的链接:c:\ users \ yanni \ documents \ visual studio 2015 \ Projects \ MyProject \ MyProject \ Uploads / references / postfinance.PNG
references.ImagePath = HttpContext.Request.PhysicalApplicationPath + "Uploads/references/" + ImagePath.FileName;
ImagePath.SaveAs(references.ImagePath);
感谢您的帮助
答案 0 :(得分:1)
尝试这样的事情:
<img src="@Url.Content("~/Uploads/Image.png")" />
如果您想根据当前请求提取图像
<img src="@Url.Content("~/Uploads/" + FileName)" />
其中文件名只是图像的名称或
<img src="@Url.Content("~/Uploads/" + System.IO.Path.GetFileName(@item.ImagePath))" />
答案 1 :(得分:0)
我真的不明白为什么你说你上传到&#34;〜/ Uploads&#34;,但稍后你将ImagePath存储为&#34;上传/ 参考 /。 ..&#34 ;.你为什么追加那个目录?你把那个文件移到那里了吗?
一般情况下:我最好将数据库中的图像路径存储为相对路径,这样您就可以随时重新定位项目。
equals()
如果您需要服务器上的图像的绝对路径(这取决于您的项目在服务器上的位置),您可以通过
在控制器中获取它var fileName = "~/Uploads/" + ImagePath.FileName;
references.ImagePath = fileName;
感谢这种方法的代码:
var realPath = Server.MapPath(fileName);
渲染到:
<img src="@item.ImagePath" alt="Image" />
这可能是你想要的......
答案 2 :(得分:0)
解决方案成立:
public ActionResult Create([Bind(Include = "ID,Compagny,Website,Logo")] References references, HttpPostedFileBase ImagePath)
{
if (ModelState.IsValid)
{
var fileName = Path.GetFileName(ImagePath.FileName);
references.ImagePath = "/Uploads/References/" + fileName;
ImagePath.SaveAs(Server.MapPath("~/Uploads/References/" + fileName));
db.References.Add(references);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(references);
}