如何在ASP.NET MVC2中处理文件输入

时间:2010-11-02 08:14:48

标签: asp.net-mvc-2 file-upload

由于没有文件输入帮助,我们如何安全地处理文件输入?

如果最好只有一个按钮

<input type="button" value="Upload File" />

并在新的弹出页面/窗口中处理它?<​​/ p>

我有

<input type="file" value="Upload File" />

但是如何在代码中处理这个?

#region General
//
// GET: /Content/General
public ActionResult General()
{
    GeneralModel model = new GeneralModel();
    return View(model);
}

[HttpPost]
public void General(GeneralModel model)
{

}

#endregion

模型将不会填充,因此我需要做其他事情......只是不知道:(

非常感谢任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

输入应该有一个名称:

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

然后,要处理上传的文件,您可以向视图模型添加属性:

public class GeneralModel
{
    // The name of the property corresponds to the name of the input
    public HttpPostedFileBase File { get; set; }
    ...
}

最后在你的控制器动作处理文件上传:

[HttpPost]
public void General(GeneralModel model)
{
    var file = model.File;
    if (file != null && file.ContentLength > 0)
    {
        // The user selected a file to upload => handle it
        var fileName = Path.GetFileName(file.FileName);
        var path = Path.Combine(Server.MapPath("~/App_Data/Uploads"), fileName);
        file.SaveAs(path);
    }
    return View(model);    
}

Phil Haack blogged关于ASP.NET MVC中的文件上传。