MVC 文件上传 代码放在哪里

MVC File upload Where to put code

好的,所以我正在尝试迁移到 MVC。 我制作了模型、视图和控制器,但现在我想更改应用程序的创建功能。

我正在处理上传,我的控制器中有这个系统生成的代码。

Function Create(<Bind(Include:="Id,Course,Category,SubCategory,FileName,FileType,UploadedBy,DateUploaded")> ByVal acAsset As acAsset) As ActionResult
        If ModelState.IsValid Then
            db.Assets.Add(acAsset)
            db.SaveChanges()
            Return RedirectToAction("Index")
        End If
        Return View(acAsset)
    End Function

现在我想改变它,这样它就会

  1. 检查课程、类别和子类别的文件夹是否存在。如果此文件夹不存在,则必须创建它。
  2. 通过文件select离子框上传文件select。
  3. Post 数据库的文件名。

代码不一定是问题,我只是不确定我应该把控制器放在哪里?

我读过这个 article 但没有处理数据库 post。

提前致谢。

在您看来

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

在你的控制器中

public actionresult(HttpPostedFileBase file)
{
string filename = Path.GetFileName(file.FileName);
    string contentType = file.ContentType;
    using (Stream fs = file.InputStream)
    {
        using (BinaryReader br = new BinaryReader(fs))
        {
            byte[] bytes = br.ReadBytes((Int32)fs.Length);
        }
    }
 //Data Context Code here 
  tableName.File= bytes;
  db.add(tableName);
  db.SaveChanges();
}

您只需在控制器中添加您想要点击按钮的代码

您的 Razor 查看代码

@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
    { 
        <input type="file" name="file" />
        <input type="submit" name="Submit" id="Submit" value="Upload" />
    }

C#代码

 [HttpPost]
   public ActionResult Upload(HttpPostedFileBase file)
   {
       if (file != null && file.ContentLength > 0)
       {
           var fileName = Path.GetFileName(file.FileName);
           var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
           file.SaveAs(path);
       }

       return RedirectToAction("UploadDocument");
    }
}