ASP.NET MVC 与Form表单交互

一,Form包含文件类(单选文件)

<form id="ImgForm" method="POST" enctype="multipart/form-data" name="ImgForm" action="/From/SubmitForm">
                <input type="file" name="fileData" >
                <br />
                <input type="text" name="name" />
                <br />
                <input type="password" name="password" />
                <br />
                <input type="submit" value="上传" />
            </form>

C#

[HttpPost]
        public void SubmitForm(HttpPostedFileBase fileData, FormCollection collection)
        {
            string name = collection["name"];
            string passowrd = collection["password"];
            string image = fileData.FileName.ToString();
            string imageGuid = Guid.NewGuid().ToString() + ".jpg";
            string path = System.Web.HttpContext.Current.Server.MapPath("~/QRimage/") + imageGuid;//只是用于演示简单的上传删除方法
            fileData.SaveAs(path);
            string deletePath = "http://wx115.cnpsim.com/QRimage/" + imageGuid;
            var img = new FileInfo(path);
            if (img.Exists) img.Delete();
        }

  

二,Form包含文件类(多选文件)

<div>
            <form id="ImgForm" method="POST" enctype="multipart/form-data" name="ImgForm" action="/From/SubmitForm">
                <input type="file" name="fileData" multiple />
                <br />
                <input type="text" name="name" />
                <br />
                <input type="password" name="password" />
                <br />
                <input type="submit" value="上传" />
            </form>
        </div>

 C#

 [HttpPost]
        public void SubmitForm(HttpPostedFileBase[] fileData, FormCollection collection)
        {
            string name = collection["name"];
            string passowrd = collection["password"];
            foreach (var file in fileData)
            {
                string image = file.FileName.ToString();
                string imageGuid = Guid.NewGuid().ToString() + ".jpg";
                string path = System.Web.HttpContext.Current.Server.MapPath("~/QRimage/") + imageGuid;//只是用于演示简单的上传删除方法
                file.SaveAs(path);
                string deletePath = "http://wx115.cnpsim.com/QRimage/" + imageGuid;
                var img = new FileInfo(path);
                if (img.Exists) img.Delete();
            }
        }

二,Form包含文件类(多选文件多Input file)

<div>
            <form id="ImgForm" method="POST" enctype="multipart/form-data" name="ImgForm" action="/From/SubmitForm">
                <input type="file" name="fileData" multiple />
                <br />
                <input type="file" name="fileData" multiple />
                <br />
                <input type="file" name="fileData" multiple />
                <br />
                <input type="text" name="name" />
                <br />
                <input type="password" name="password" />
                <br />
                <input type="submit" value="上传" />
            </form>
        </div>

C#

  [HttpPost]
        public void SubmitForm(FormCollection collection)
        {
            string name = collection["name"];
            string passowrd = collection["password"];
            for(int i=0;i<Request.Files.Count;i++)
            {
                HttpPostedFileBase f = Request.Files[i];
                string nwame = f.FileName.ToString();
            }
            
        }

总结:以上三种form提交文件的方式均可用Request.Files接受;

非表单方式的提交

第一种(不能直接传递文件可以但是有解决办法FormData,传递对象需要转化为Json)

参考链接:http://www.cnblogs.com/tylerdonet/p/3520862.html

参考链接:http://www.cnblogs.com/MC-zhouyongli/p/4789620.html

 $.ajax({
        type: "post",
        url: "/From/SubmitForm",
        dataType: "json",
data: { page: sumLoad, filt: filter },
//async: false,//关闭异步 success: function (data) { if (data.length > 0) { $("#ImageDiv").append('<h4 id="imagealert">图片正在加载中请稍等...</h4>') } $.each(data, function (key, value) { var img = new Image(); img.src = value; img.onload = function () { var size = img.width + 'x' + img.height; console.log(size) $("#ImageDiv").append('<div>' + '<a href=' + '"' + value + '"' + 'data-size=' + '"' + size + '"' + '>' + '<img class="WorkOrderimageOld" style="height:40px;width:40px;" src=' + '"' + img.src + '"' + '>' + '</a>' + '</div>' ) }; } ); }, complete:function() { // $("#ImageDiv").text("图片已加载完成"); }, beforeSend: function () { //$("#ImageDiv").text("图片加载中"); }, error: function () { // $("#ImageDiv").text("图片加载异常"); }, });

C#

 public ActionResult WorkOrderJson(int page = 1, string filt="全部")
{
     ..........
  return Json(list, JsonRequestBehavior.AllowGet);
}

 

第二种(已传递文件为主,不能一次传递多个文件可以添加for循环模拟上传多个文件)

参考链接:http://www.cnblogs.com/snowinmay/archive/2013/07/17/3195072.html

 
function SaveImage()
{
           var Savefiles=document.getElementById("inputFile").files;
           var formData = new FormData();
            formData.append('file', Savefiles[n]);
            var oReq = new XMLHttpRequest();
            oReq.open("POST", "/WorkOrder/ImageUpload", false);//第三个参数用于控制同步异步  true为异步,false为同步
            oReq.onload = function (oEvent) {
                if (oReq.readyState == 4) {
                    if (oReq.status == 200 || oReq.status == 0) {
                        var result = oReq.responseText;
                        //var json = eval("(" + result + ")");
                        if(result=="OK")
                        {
                           Backinfo[m] = "OK";
                           $("#ImageDiv").text("第"+m+"张图片已上传");
                        }
                        
                    }
                }
            };
     oReq.send(formData);  
}

C#

public string  ImageUpload()
        {
            HttpPostedFileBase file = Request.Files[0];
            string Checkerror = CheckImg(file);//自定义检查文件类型以及大小等
            AppLog.Info("检查图片信息结果:" + Checkerror);
             if (Checkerror == "ok")
             {
                 return "OK";
             }
            else
             {
                 return "NO";
             }

        }

第三种jQuery File Upload-jQuery上传插件(查看资料功能比较强大但为用上)

实例地址:http://www.jq22.com/jquery-info230

 

posted @ 2016-08-05 16:48  名扬博客  阅读(5506)  评论(0编辑  收藏  举报