在asp.net中将绝对替换为相对路径

时间:2016-05-19 17:31:54

标签: c# html asp.net asp.net-mvc relative-path

我在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

此ControllerCode引用:

references.ImagePath = HttpContext.Request.PhysicalApplicationPath + "Uploads/references/" + ImagePath.FileName;
ImagePath.SaveAs(references.ImagePath);

感谢您的帮助

3 个答案:

答案 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);
        }