asp.net MVC4 异步文件上传

1、下载ajaxfileupload.js

2、在控制器内创建如下方法

        //文件上传
        public ActionResult uploadFile(HttpPostedFileBase file)
        {
            if (file == null)
            {
                return Json(new { result = "false", errorMsg="文件不存在" }, "text/html");
            }

            string fileName = "~/UploadFiles/" + DateTime.Now.ToString("yyyyMMddHHssmm") + Path.GetFileName(file.FileName);
            var physicsFileName = Server.MapPath(fileName);
            try
            {
                file.SaveAs(physicsFileName);
                return Json(new { result = "true", imgUrl = fileName }, "text/html");
            }
            catch(Exception ex)
            {
                return Json(new { result = "false", errorMsg = ex.Message }, "text/html");
            }
        }

3、在前端编写如下JS,需要引入JQuery和ajaxfileupload.js

    <script type="text/javascript">
        function ajaxFileUploads() {
            $("#loading").ajaxStart(function () {
                $(this).show();
            }).ajaxComplete(function () {
                $(this).hide();
            });

            $.ajaxFileUpload({
                url: '/User/uploadFile',        //后台处理的 - Controller/Action
                secureuri: false,
                fileElementId: 'fileToUpload',  //上传文件的Name属性
                dataType: 'json',
                type: 'post',
                success: function (data, status) {
                    alert(data.result);
                    if (data.result === "true") {    //成功后把后台文件路径赋值给异常控件,便于一起提交给后台
                        alert(data.imgUrl);
                        $(".imgUrl").val(data.imgUrl);
                    } else if (data.result === "false") {
                        alert(data.errorMsg);
                    }
                },
                error: function (data, status, e) {
                    alert(e);
                }
            })
            return false;
        }

        $(document).ready(function () {
            $(".btnUpload").click(function () {
                ajaxFileUploads();
            });
        });
    </script>

4、View中的代码

    <div>
        个人头像:@Html.HiddenFor(m => m.imgUrl, new { @class = "imgUrl" })  //强类型绑定
        <input type="file"  />  //上传控件和上传按钮
        <span >请等待</span>  //等待提示
    </div>