无法在mvc

时间:2016-05-30 23:35:34

标签: c# asp.net asp.net-mvc

我是第一次在网络服务器上传MVC网站。除文件上传选项外,一切运行良好。每当我尝试上传文件时,它都会提示我这个错误:

  

SaveAs方法配置为需要根路径和路径   ''没有扎根。

错误详细信息以某种方式显示了我在本地计算机上创建的项目路径。

  

System.Web.HttpException(0x80004005):已配置SaveAs方法   要求一个有根的道路,以及路径''没有扎根。在   Printrpk.Controllers.ProductController.Create(ProductModels product)   在   C:\项目\卡丁车\卡丁车\卡丁车\ \控制器ProductController.cs:行   145

我尝试了多种方法来检查我的代码是否错误,但我无法使其正常工作。

这是我在创建操作

下编写的内容
foreach (string fileName in Request.Files)
{
    HttpPostedFileBase file = Request.Files[fileName];
    fName = file.FileName;
    if (file != null && file.ContentLength > 0)
    {
        var originalDirectory = new DirectoryInfo(string.Format("{0}images", Server.MapPath(@"/")));
        var pathString = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ProductImages");
        var filename = Path.GetFileName(file.FileName);

        bool isExists = System.IO.Directory.Exists(pathString);
        if (!isExists)
        {
            System.IO.Directory.CreateDirectory(pathString);
        }

        path = string.Format("{0}//{1}", pathString, filename);
        file.SaveAs(path);
    }
}

当我不上传任何图像时,此控制器工作正常。我已经检查了我的web.config,它已经指向web-server。

这包含在Create视图

<input name="file" type="file" multiple />

此外,我的基本文件夹中已有目标文件夹

1 个答案:

答案 0 :(得分:3)

使用Server.MapPath()获取与虚拟路径对应的物理路径。假设您的应用包含名为Images的文件夹,其中包含名为ProductImages的子文件夹,那么

var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Images/ProductImages"), fileName);
file.SaveAs(path);

附注:考虑向POST方法添加参数IEnumerable<HttpPostedFileBase> file,以便它与所选文件绑定(或者更好,将其作为视图模型中的属性包含在内)而不是使用Request.Files < / p>