iframe的使用技巧

    对于上传文件,通常前台上传文件至后台时,后台是一个 Servlet 来处理请求,而 Servlet 处理请求中,通常会有返回页面,所以如果要做到界面显示,而不会让用户感觉有因为上传而产生的刷屏的样子,应该做一个类似于 AJAX 的表现,来进行局部刷新,不过 AJAX 本身而言,并不支持 form post 方式的文件提交,所以不能用 AJAX 来进行上传文件的局部刷新。通常比较好的一种做法是在你的网页中内嵌一个 iframe ,在 iframe 里面做一个 form ,以进行文件上传的提交。具体示例代码见下。

文件名: uploadtest.html

< html >

    < head >

        < title > 文件上传 </ title >

        < meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >

    </ head >

    < body >

        < p >

            < b > 文件上传 </ b >

        </ p >

        < br />

       < br />

        < div id = "fileSendDiv" >

                  < iframe width = "100%" height = "35" frameborder = "0" id = "show" name = "show" src = "uploadfile.jsp" scrolling = "no" style = "frameborder:0" align = "left" ></ iframe >

       </ div >

       < br />

       < br />

       < br />

       < br />

       < p >

            < b > 刷新的是 iframe ,父页面不会改变 </ b >

        </ p >

    </ body >

</ html >

该页面注意的是 iframe 的使用,刷新的会是 iframe iframe 指向了一个新的文件,文件名叫: uploadfile.jsp ,这个才是真正的上传文件的内容表现,你可以将这个文件作为工具类型的文件,只要在上传文件中通过 iframe 引用这个文件即可( uploadtest.html uploadfile.jsp 处于同一个目录中)。

上传显示文件代码如下:

文件名: uploadfile.jsp

<%@ page language = "java" import = "java.util.*" pageEncoding = "UTF-8" %>

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >

< html >

    < head >

       < title > 上传文件 </ title >

       < meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >

       < meta http-equiv = "pragma" content = "no-cache" >

       < meta http-equiv = "cache-control" content = "no-cache" >

       < script language = "JavaScript" type = "text/javascript" >

       function upload()

       {     

           var filename = document.tab.uploadfile.value;

           if (filename== '' )

           {

               alert( " 没有选择要上传的文件,请选择 !" );

               return ;

           }

          

           document.tab.action = "FileUpload" ; // 提交上传为文件时,所指向的 servlet 配置的 Servlet 动作

           document.tab.target= "show" ; // 指向 iframe ID ,即刷新页面返回时所指的地方。

           document.tab.submit();     

          

       }

    </ script >

    </ head >

    < body style = "margin:0px;" >

       < form name = "tab" method = "post" action = "" enctype = "multipart/form-data" >

           < input type = "file" id = "uploadfile" name = "uploadfile"  style = "border:1px solid black;" >

           < input type = "button" name = "up" value = " 上传 " style = "border:1px solid black;height:20px;" onClick = "upload()" >

       </ form >    

    </ body >

</ html >

需要明确的是该上传文件当调用 upload 之后,其返回所指向的是 ID show 表单,查看 uploadtest.html 中的 iframe 发现,指的就是这个 iframe ID ,所以说当后台的 Servlet 有返回时,刷新的也只是这个 iframe ,而不会影响整个父页面的显示效果。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值