代码之家  ›  专栏  ›  技术社区  ›  balexandre

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

  •  0
  • balexandre  · 技术社区  · 14 年前

    没有文件输入的帮助程序 ,如何安全地处理文件输入?

    如果有个按钮更好

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

    在一个新的弹出页面/窗口中处理这个问题?

    <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 回复  |  直到 14 年前
        1
  •  1
  •   Darin Dimitrov    14 年前

    输入应该有一个名称:

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

    菲尔·哈克 blogged 关于ASP.NET MVC中的文件上载。