在 asp.net 中将绝对路径替换为相对路径
Replace absolute to relative path in asp.net
我在ASP.NETMVC 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 ...。
也许重要的是要说明:在我的数据库中,我有完整的 link: c:\users\yanni\documents\visual studio 2015\Projects\MyProject\MyProject\Uploads/references/postfinance.PNG
由此 ControllerCode 引用:
references.ImagePath = HttpContext.Request.PhysicalApplicationPath + "Uploads/references/" + ImagePath.FileName;
ImagePath.SaveAs(references.ImagePath);
感谢您的帮助
我真的不明白为什么你说你上传到“~/Uploads”,但后来你将ImagePath存储为"Uploads/references/..."。你为什么附加那个目录?你把那个文件移到那里吗?
总的来说:我最好将图片路径作为相对路径存储在数据库中,这样您可以随时重新定位项目。
var fileName = "~/Uploads/" + ImagePath.FileName;
references.ImagePath = fileName;
如果您需要服务器上图像的绝对路径(这取决于您的项目在服务器上的位置),您可以通过
在控制器中获取它
var realPath = Server.MapPath(fileName);
感谢这种方法将此代码:
<img src="@item.ImagePath" alt="Image" />
渲染到:
<img src="~/Uploads/postfinance.PNG" alt="Image" />
这可能是你想要的...
解决方案成立:
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);
}
尝试这样的事情:
<img src="@Url.Content("~/Uploads/Image.png")" />
如果你想根据当前请求获取图片
<img src="@Url.Content("~/Uploads/" + FileName)" />
其中文件名只是图像的名称或
<img src="@Url.Content("~/Uploads/" + System.IO.Path.GetFileName(@item.ImagePath))" />
我在ASP.NETMVC 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 ...。
也许重要的是要说明:在我的数据库中,我有完整的 link: c:\users\yanni\documents\visual studio 2015\Projects\MyProject\MyProject\Uploads/references/postfinance.PNG
由此 ControllerCode 引用:
references.ImagePath = HttpContext.Request.PhysicalApplicationPath + "Uploads/references/" + ImagePath.FileName;
ImagePath.SaveAs(references.ImagePath);
感谢您的帮助
我真的不明白为什么你说你上传到“~/Uploads”,但后来你将ImagePath存储为"Uploads/references/..."。你为什么附加那个目录?你把那个文件移到那里吗?
总的来说:我最好将图片路径作为相对路径存储在数据库中,这样您可以随时重新定位项目。
var fileName = "~/Uploads/" + ImagePath.FileName;
references.ImagePath = fileName;
如果您需要服务器上图像的绝对路径(这取决于您的项目在服务器上的位置),您可以通过
在控制器中获取它var realPath = Server.MapPath(fileName);
感谢这种方法将此代码:
<img src="@item.ImagePath" alt="Image" />
渲染到:
<img src="~/Uploads/postfinance.PNG" alt="Image" />
这可能是你想要的...
解决方案成立:
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);
}
尝试这样的事情:
<img src="@Url.Content("~/Uploads/Image.png")" />
如果你想根据当前请求获取图片
<img src="@Url.Content("~/Uploads/" + FileName)" />
其中文件名只是图像的名称或
<img src="@Url.Content("~/Uploads/" + System.IO.Path.GetFileName(@item.ImagePath))" />