我想将图像上传到服务器,但是可以使用~/images/profile
将图像本地上传到项目文件夹,但如果我使用完整路径,则不会将图像上传到服务器。我正在使用的代码在下面给出了一个示例网址。请帮忙解决我的问题。我已经看到了stackoverflow的其他链接,但它们无法正常工作。它给出路径的错误消息是无效的。虚拟路径和SaveAs
方法配置为需要根路径,并且路径不是root。
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());
}
答案 0 :(得分: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等)。
答案 1 :(得分:0)
Server.MapPath不应包含网址。这是肯定的。
另外,请勿使用
string pic = System.IO.Path.GetFileName(file.FileName);
但只是
string pic = file.FileName;