MVC 3图像上传路径

时间:2012-04-18 16:19:48

标签: c# asp.net-mvc-3 image path

我正在尝试上传图片和缩略图。

我已将web.config中的上传路径设置为<add key="UploadPath" value="/Images"/>

当我上传图片时,它会获得应用程序所在的硬盘和文件夹的完整路径|:

D:\Projects\Social\FooApp\FooApp.BackOffice\Images\image_n.jpg

但我只想要/images/image_n.jpg

我使用Path.Combine您认为原因是什么?

我该如何解决这个问题?

这是代码|:\

foreach (var file in files)
                {
                    if (file != null && file.ContentLength > 0)
                    {
                        var fileName = Path.GetFileName(file.FileName);
                        if (fileName != null) originalFile = Server.MapPath(upload_path) + DateTime.Now.Ticks + "_ " + fileName;


                        file.SaveAs(originalFile); 

                        images.Add(originalFile);
                    }
                }

2 个答案:

答案 0 :(得分:6)

您需要使用HttpContext.Current.Server.MapPath

  

返回与Web服务器上指定虚拟路径对应的物理文件路径。

您的代码可能如下所示:

Path.Combine(HttpContext.Current.Server.MapPath("~/Images"), fileName);

*编辑 - 我正在添加您上面提供的代码。它看起来像这样。

foreach (var file in files)
{
    if (file != null && file.ContentLength > 0)
    {
        var fileName = Path.GetFileName(file.FileName);
        var uploadPath = "~/Images"; //This is where you would grab from the Web.Config. Make sure to add the ~

        if (fileName != null) {
            var originalFile = Path.Combine(HttpContext.Current.Server.MapPath(uploadPath), DateTime.Now.Ticks + "_ " + fileName);
            file.SaveAs(originalFile); 
            images.Add(originalFile);
        }
    }
}

答案 1 :(得分:0)

我认为此代码位于您的某个控制器中。 你试过了吗?

Server.MapPath(yourPath);