2016-03-04 45 views
0

好的,所以我正在尝试向MVC转移。 我有一个模型,视图和控制器,但现在我想改变应用程序的创建功能。MVC文件上传在哪里可以放置代码

我正在使用uploads,并且在我的控制器中有这个系统生成的代码。

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. 通过文件选择框上传文件选择。
  3. 将文件的名称发布到数据库。

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

我已阅读此article但不处理数据库文章。

预先感谢您。

回答

1

你只需要添加你的代码,你想打按钮控制器点击

你的剃须刀查看代码

@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"); 
    } 
} 
0

在你看来

<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(); 
}