将数据写入数据库,包括图像

时间:2012-11-14 09:12:02

标签: file-upload asp.net-mvc-4 form-data

我有一个mvc 4项目,我需要将数据写入数据库,包括“创建”视图中的图像。

我找到了一些关于如何上传图片的例子。但是没有一个示例有一些额外的输入字段以及html文件上传控件。

让我想知道是否可以浏览图像并填写其他字段并按“发送”按钮,并接收控制器中的所有数据,特别是此方法:

 [HttpPost]
 public ActionResult Create(FormCollection formCollection) 
 { 
  foreach (var key in formCollection.AllKeys)
  {
     if (key == "file")
     {
        foreach (string s in Request.Files)
        {
           HttpPostedFileBase file = Request.Files[s];
           if (file.ContentLength > 0)
           {
           }
        }
      }
   }
}

这是观点:

 @using (Html.BeginForm("Create", "Item", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Item</legend>

        <div class="editor-label">
            Description:
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Description)
            @Html.ValidationMessageFor(model => model.Description)
        </div>
         <div class="editor-label">
            Image:
        </div>

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

        <p>
            <input type="submit" value="send" />
        </p>
    </fieldset>
}
在这种情况下,

Request.Files始终为空。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

您还应该能够使用强类型编辑模型执行此操作:

public class MyDataEditModel
{
    public string Description { get; set; }
    public HttpPostedFileBase File { get; set; }
}


[HttpPost]
public ActionResult Create(MyDataEditModel model) 
{ 
    // is model.File null here?  
}

答案 1 :(得分:1)

您可以关注this tutorial,其中显示了如何在ASP.NET MVC中上传图像

此处的操作如下所示。

[HttpPost]
public ActionResult Index(UserModel model, HttpPostedFileBase file)
{}

以及发布的文件,还会发布一个UserModel,它会从页面获取其他数据,这就是您想要的。