用Html5与Asp.net MVC上传多个文件

html:

        <form action="/home/upload" method="post" enctype="multipart/form-data">
            <input type="file"  name="files" multiple/>
            <input type="submit" value="提交" />
        </form>

文件file 的name属性必填。

ActionResult:

 [HttpPost]
        public ActionResult Upload(HttpPostedFileBase[] files)
        {
            var path = Server.MapPath("/File");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            foreach (HttpPostedFileBase item in files)
            {
                item.SaveAs(Path.Combine(path, item.FileName));
            }
            return Content("ok");
        }

H5让我们轻松实现文件上传.

如果异步,代码如下

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
</head>
<body>
    <div>
        <form  enctype="multipart/form-data">
            <input type="file"  name="files" multiple />
            <input type="button"  value="提交" />
        </form>
    </div>
    <script>
        $("#btnok").click(function () {
            var formdata = new FormData(document.getElementById("formtable"));
            $.ajax({
                url: "/home/upload",
                data: formdata,
                type: 'post',
                datatype: 'json',
                // XMLHttpRequest会对 formdata 进行正确的处理
                processData: false,
                //必须false才会自动加上正确Content-Type
                contentType: false,
                success: function (data) { alert(data); }
            })
        });
    </script>
</body>
</html>
public ActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Upload(HttpPostedFileBase[] files)
        {
            var path = Server.MapPath("/File");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            foreach (HttpPostedFileBase item in files)
            {
                item.SaveAs(Path.Combine(path, item.FileName));
            }
            return Content("ok");
        }