asp.net 实现无刷新上传(IFrame无刷新上传文件)
2013-01-17 15:51
746 查看
第一步,引用Jquery
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
第二步,添加IFrame
在这里需要注意一下几点:
1:Iframe必须在一个表单里面<from>;
2:<from>表单的action属性,指向一个页面,该页面的作用是处理上传文件;
3:<from>表单的target属性值和<iframe>的id,name属性值相同
第三步,Js方法 onclick="SubmitSecondForm()"
在这里需要说一下,form:eq(1),是找到索引为1的form表单,并且提交。
第四步,就是UpLoad.aspx(处理上传文件的页面)
在该页面,直接写处理文件的代码
如果以上上传后,还需要读取文件内容,并且要求返回文件内容的话,那么继续往下看:
提交表单的js代码就如下:
用以上方法,就可以拿到返回值,并且付给页面上的文本框了。
但是,还有一个问题,需要提一下,如果你的Iframe表单里面,iframe包含在div层里面,是不是提交失败了,那么,就要加上下面这句:
$("#form1~div").appendTo("#formUpReceipt");
程序在运行的时候,表单里面的div层不知道什么原因跳出了表单,跑到html页面最后一个表单的外面了,所以我要再把它放进表单里面。不然程序就找不到提交内容了。
第一次写技术文章,写的乱七八糟,看不懂算了,希望能帮到需要的人。
<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" onclick="SubmitSecondForm()"/> </form>
在这里需要注意一下几点:
1:Iframe必须在一个表单里面<from>;
2:<from>表单的action属性,指向一个页面,该页面的作用是处理上传文件;
3:<from>表单的target属性值和<iframe>的id,name属性值相同
第三步,Js方法 onclick="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页面最后一个表单的外面了,所以我要再把它放进表单里面。不然程序就找不到提交内容了。
第一次写技术文章,写的乱七八糟,看不懂算了,希望能帮到需要的人。
相关文章推荐
- asp.net中MVC借助Iframe实现无刷新上传文件实例
- asp.net中MVC借助Iframe实现无刷新上传文件实例
- asp.net实现文件无刷新上传方法汇总
- asp.net实现文件无刷新上传方法汇总
- asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输
- asp.net+js 实现无刷新上传解析csv文件的代码
- Javascript与asp.net 实现Ajax多文件无刷新上传【转】
- Javascript与asp.net 实现Ajax多文件无刷新上传
- ASP.Net+Ajax实现多文件无刷新上传
- [Flash FileUpload]用flash.net.FileReference实现ASP.NET无刷新文件上传
- Asp.Net 用Jquery和一般处理程序实现无刷新上传大文件
- [荐]Javascript与asp.net 实现Ajax多文件无刷新上传
- Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)
- [Flash FileUpload]用flash.net.FileReference实现ASP.NET无刷新文件上传
- Javascript与asp.net 实现Ajax多文件无刷新上传
- GridView 72般绝技,Javascript与asp.net 实现Ajax多文件无刷新上传,在ASP.NET中执行URL重写经典方案
- [Flash FileUpload]用flash.net.FileReference实现ASP.NET无刷新文件上传
- Javascript与asp.net 实现Ajax多文件无刷新上传
- Asp.net + js 异步上传文件的例子 - 使用iframe实现
- asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输