【问题标题】:Path is not a valid virtual path while uploading image to server in asp.net mvc在 asp.net mvc 中将图像上传到服务器时,路径不是有效的虚拟路径
【发布时间】:2014-01-20 02:14:49
【问题描述】:

我想上传图片到服务器,但是图片可以在本地上传到~/images/profile的项目文件夹,但是如果我使用完整路径,它不会上传到服务器。我正在使用的代码在下面给出了一个示例 url。请帮助解决我的问题。我看过stackoverflow的其他链接,但它们不起作用。它给出路径无效的错误消息。虚拟路径和SaveAs方法配置为需要有根路径,且路径没有根。

public ActionResult FileUpload(HttpPostedFileBase file, tbl_Image model)
{
    if (file != null)
    {
        string pic = System.IO.Path.GetFileName(file.FileName);
        string path = System.IO.Path.Combine(Server.MapPath("http://sampleApp.com/images/profile/"), pic);
        file.SaveAs(path);
        db.AddTotbl_Image(new tbl_Image() { imagepath = "http://sampleApp.com/images/profile/" + pic });
        db.SaveChanges();
    }

    return View("FileUploaded", db.tbl_Image.ToList());
}

【问题讨论】:

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


    【解决方案1】:

    为什么在代码中使用站点名称(“http://sampleApp.com”)?我认为您在保存时不需要它。

    public ActionResult FileUpload(HttpPostedFileBase file, tbl_Image model)
    {
        if (file != null)
        {
            string fileName = System.IO.Path.GetFileName(file.FileName);
            string fullPath = System.IO.Path.Combine(Server.MapPath("~/images/profile"), fileName);
            file.SaveAs(fullPath);
            db.AddTotbl_Image(new tbl_Image() { imagepath = "http://sampleApp.com/images/profile/" + fileName });
            db.SaveChanges();
        }
    
        return View("FileUploaded", db.tbl_Image.ToList());
    }
    

    您也可以fileName 保存在数据库中以实现一般目标。因为将来 URL 可以更改。 (通过域名、SSL 等)

    【讨论】:

      【解决方案2】:

      Server.MapPath 不应包含 url。这是肯定的。

      另外,不要使用

      string pic = System.IO.Path.GetFileName(file.FileName);
      

      只是

      string pic = file.FileName;
      

      【讨论】:

      • 如果我使用的是字符串路径 = "sampleApp.com/images/profile "+" pic;那么它也不起作用
      • 好的.. 谢谢... 看到你的答案
      • 但是我将如何获取保存图像的路径,因为当我在本地保存时,Server.MapPath(~/images/profile",pic) 正在工作,但在服务器上它不工作,所以我给了它完整路径“http:.....”
      • Server.MapPath 中的 ~ 是对 Web 应用程序中当前文件夹的引用,因此它可以在服务器上运行。如果不起作用,您能否将确切的错误发送给我们?
      • 还有什么问题或错误吗?如果没有,请标记为已回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多