• 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;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

  • 相关阅读:
    在powerdesigner中,一个table,怎么在diagram中创建多个symbol
    查看SQLserver编码格式的SQL语句
    永久解决火狐浏览器出现的flash版本更新问题
    列出所有表的情况
    sql查询当天,一周,一个月数据的语句
    vs2010边调试边编辑后台.cs文件的办法
    sql查询上一条记录和下一条记录
    jquery 中substring,substr,split的用法
    jQuery HTML 操作
    Win10怎么设置始终以管理员身份运行应用程序
  • 原文地址:https://www.cnblogs.com/wangboke/p/5741995.html
Copyright © 2020-2023  润新知