asp.net 实现无刷新上传(IFrame无刷新上传文件)

第一步,引用Jquery

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

第二步,添加IFrame

 <form id="form2" enctype="multipart/form-data" method="post" action="UpLoad.aspx?action=UpLoad" target="iframe_upfile">
    <iframe id="iframe_upfile" name="iframe_upfile" style="display:block">
    </iframe>
    <input name="UpFile" type="file" /><%--iframe方法中file控件是name属性,不是id属性--%>

    <input id="btnup2" type="button" value="上传2" οnclick="SubmitSecondForm()"/>
</form>

在这里需要注意一下几点:

1:Iframe必须在一个表单里面<from>;

2:<from>表单的action属性,指向一个页面,该页面的作用是处理上传文件;

3:<from>表单的target属性值和<iframe>的id,name属性值相同

第三步,Js方法 οnclick="SubmitSecondForm()"

function SubmitSecondForm() {
            $("form:eq(1)").submit();
        }

在这里需要说一下,form:eq(1),是找到索引为1的form表单,并且提交。

第四步,就是UpLoad.aspx(处理上传文件的页面)

在该页面,直接写处理文件的代码

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string action=HttpContext.Current.Request.QueryString["action"];
            if (action=="UpLoad")
            {
                HttpFileCollection files = HttpContext.Current.Request.Files;
                if (files.Count>0)
                {
                    Response.Write(UpLoadFile(files[0]));
                    Response.End();
                }
            }
        }
    }
    private string UpLoadFile(HttpPostedFile pf) 
    {
        string FileName = System.IO.Path.GetFileName(pf.FileName);
        string FileExtention = System.IO.Path.GetExtension(pf.FileName);
        if (FileName != "")
        {
            if (pf.ContentLength > 1024*1)
            {
                return "抱歉上传文件太大,目前支持1M文件";
            }
            else
            {
                string path = System.Web.HttpContext.Current.Request.MapPath("~/UpFile");
                if (!System.IO.Directory.Exists(path))
                {
                    System.IO.Directory.CreateDirectory(path);
                }
                else
                {
                    pf.SaveAs(path + "\\" + FileName);
                    
                }
                if (System.IO.File.Exists(path + "\\" + FileName))
                {
                    return "1";
                }
                else 
                {
                    return "上传失败";
                }
            }
        }
        else 
        {
            return "没有找到文件";
        }
    }

如果以上上传后,还需要读取文件内容,并且要求返回文件内容的话,那么继续往下看:

提交表单的js代码就如下:

      function SubmitThirdForm(){
           $("#form1~div").appendTo("#formUpReceipt");
           var file=document.getElementsByName("UpReceiptFile")[0].value;
           if(file!=""){
                $("form:eq(0)").submit();
                tt=setInterval("MyReceiptUp()", 1000);
             } 
      }

     
      function MyReceiptUp(){
     
            document.getElementById("divimagereceipt").style.display = "none";
            
            var doc;
            try {
                if (document.all) {//IE
                    doc = document.frames["iframe_upfileRe"].document;
                } else {//Firefox    
                    doc = document.getElementById("iframe_upfileRe").contentDocument;
                }
                var txt = doc.body.innerHTML;
                          } 
            catch (e) {
            
                alert("抱歉,您上传的文件太大了!");
            }
     }

用以上方法,就可以拿到返回值,并且付给页面上的文本框了。

但是,还有一个问题,需要提一下,如果你的Iframe表单里面,iframe包含在div层里面,是不是提交失败了,那么,就要加上下面这句:

$("#form1~div").appendTo("#formUpReceipt");

程序在运行的时候,表单里面的div层不知道什么原因跳出了表单,跑到html页面最后一个表单的外面了,所以我要再把它放进表单里面。不然程序就找不到提交内容了。

第一次写技术文章,写的乱七八糟,看不懂算了,希望能帮到需要的人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值