一个图片按钮实现的文件上传

做了很多的尝试,最后才在某位高手大叔的博客里,找到答案.

原先的实习思路是用样式控制的,让文件控件不显示出来,在另外一个按钮的点击事件里头调用她的onClick事件:代码如下:

xml 代码
  1. <form   name="aForm" method="post" >  
  2.  <input type="file" name="filepath"  class="ap" >form>  

 

  1. function chooseFile(){   
  2.        
  3.      var  aForm=document.forms['aForm'];   
  4.      aForm.filepath.click();   
  5.      var  filepath=aForm.filepath.value;   
  6.      if(filepath==""){   
  7.         alert("你没有选择文件");   
  8.      }else  {       
  9.          aForm.submit();   
  10.      }   
  11.         
  12.  }  

后果是:提交到后,得不到文件路径.原因是,file这个控件,它不能由让其他的控件触发它,不然得不到值.所以白做了.

 

后来,项目经理给了个思路,用动态生成的file控件试下,结果,还是不行.因为file控件,是只读的,不能通过其它的方式赋值,只有自己控件本身才能.        所以还是不行.

后来:哈哈~用透明的.既然隐藏不行,动态也不行,那就玩下透明的总可以吧...HOHO..具体代码如下:

  1. <html>  
  2. <head>  
  3. <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  4. <title>本窗口将被用于提交文件, 在父窗口再生成一个文件上传按钮title>  
  5. <style>  
  6.   .alpha{position: absolute;    
  7.          top: 0px; font-size: 44px;   
  8.          left: -640px; -moz-opacity:0;   
  9.          filter:alpha(opacity: 0); opacity: 0;}      
  10.  .imgP{position: absolute; left: 0px; top: 0px;}       
  11.     
  12. style>  
  13. <script language="JavaScript">  
  14.       window.do_upload = function(n) {    
  15.               var filename=document.getElementById('upload').value;    
  16.               if(document.getElementById('upload').value == '')  return;    
  17.               if(n==0){      
  18.                         
  19.                   document.getElementById('upload_display').style.display = 'none';   
  20.                   document.getElementById('upload_ndisplay').style.display = 'block';   
  21.                      
  22.                       
  23.               }else  if(n==1){   
  24.                   document.getElementById('upload_display').style.display = 'block';   
  25.                   document.getElementById('upload_ndisplay').style.display = 'none';   
  26.                      
  27.               }   
  28.               var l = filename.split(/[\/\\]/),    
  29.               filename = l[l.length - 1];    
  30.               parent.doSendInfo(filename);   
  31.               document.forms[n].submit();   
  32.       };   
  33. script>  
  34. head>  
  35. <body style="padding: 0px; margin: 0px; vertical-align: middle; text-align: center;">  
  36.      <span id="upload_display">  
  37.      <img src="/images/im/topimg/sendfile.gif"  class="imgP"/>  
  38.      <form action="/chat/file.shtml?method=doFile" method="post" enctype="multipart/form-data">    
  39.      <input id="upload" name="upload" type="file" onchange="do_upload(0)"   class="alpha"/>  
  40.      span>  
  41.         
  42.     <span id="upload_ndisplay" style="display: none;" >  
  43.      <img src="/images/im/topimg/sendfile.gif" class="imgP"/>  
  44.      <form action="/chat/file.shtml?method=doFile" method="post" enctype="multipart/form-data">  
  45.      <input id="upload" name="upload" type="file" onchange="do_upload(1)"  class="alpha" />form>  
  46.      span>              
  47. body>  
  48. html>  

 这是调用的部分:

  1. <iframe id=imgForm name=imgForm src="/chat/file.shtml?method=upload"     
  2.        border="0" frameborder="no" style="width:27px; height:30px;"  scrolling="no"  >iframe>  

 用了两个file控件,因为第一个提交后,让另外一个代替它.还是返回原来的界面~这样,在用户看来,那个按钮好象没变一样~哈哈~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值