如何在数据库中保存图像路径并将图像保存在项目文件夹

时间:2018-04-12 23:58:44

标签: c# asp.net-mvc database entity-framework

操作在数据库中成功创建了图像路径,但图像没有保存在FileUploaded文件夹中

这是我的模特

namespace Blog.Models
{
    public class Post

    public int Id { get; set; }

    [Required]
    public string Title { get; set; }

    [Required]
     public string Content { get; set; }

     [Required]
     [Display (Name = "upload photo")]
     public string Path { get; set; }

    [Required]
    public DateTime PostDate { get; set; }

    public IEnumerable<Comment> Comments { get; set; }

   }
} 

这里我的Controller要插入数据库

数据库中的图像路径成功但图像没有保存在FileUploaded文件夹中

[HttpPost]
public ActionResult Submit(Post post , HttpPostedFileBase file)
{

if (ModelState.IsValid)
{
    post.PostDate = DateTime.Now;

    if (file != null)
    {
         post.Path = file.FileName;
        string FileName = Path.GetFileName(file.FileName);
        string path = Path.Combine(Server.MapPath("~/FileUploaded/" 
        + FileName));
        file.SaveAs(path);
    }


    _db.Posts.Add(post);
    _db.SaveChanges();

    return RedirectToAction("Index");
}

这里是我的View html页面,它位于post controller中的提交

@model Blog.Models.Post
@{
 ViewBag.Title = "Create";
 Layout = "~/Views/Shared/_Layout.cshtml";
 }

 <h2>New Post</h2>
 @using (Html.BeginForm("Submit", "Posts",FormMethod.Post,new 
 {enctype = "multipart/form-data"}))
 {
  <div class="form-group">
  @Html.LabelFor(m => m.Title)
   @Html.TextBoxFor(m => m.Title, new { @class = "form-control" })
   @Html.ValidationMessageFor(m => m.Title)
   </div>

  <div class="form-group">
  @Html.LabelFor(m => m.Content)
  @Html.TextAreaFor(m => m.Content, new { @class = "form-control" })
  @Html.ValidationMessageFor(m => m.Content)
 </div>

 <div class="form-group">
 @Html.LabelFor(m => m.Path)
 @Html.TextBoxFor(m => m.Path, new { @class = "form-control", type = 
 "file" })
@Html.ValidationMessageFor(m => m.Path)
</div>

@Html.AntiForgeryToken()
  <button type="submit" class="btn btn-primary">Post Now</button>
}

1 个答案:

答案 0 :(得分:0)

我的假设看起来像是一个权限问题。

更改 FileUploaded 文件夹上的权限,以便ASP.NET可以写入该权限。

首先尝试将图像保存到〜/ App_Data / 文件夹中,如果保存成功,则表示您有权限问题。