我的漫漫程序之旅

          專注于JavaWeb開發
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數據加載中……

          沖擊多個Input File賦值兼解決中文賦值問題

          網上搜索了半天也沒有完整的解決方案。
          用此方法需要添加到信任站點或解除未簽名的ActiveX控件的禁用

          項目需求是自動搜索客戶端的圖片,找到合適的自動上傳(理論上能上
          傳任何東西)前提就是上面提到的.
          用這個方法經測試成功.上傳OK!(注意不安全喲,不要用此做壞事喲,
          此源碼只做交流,請不要用于非法用途)

          大概寫一下流程:


          <HTML>
           
          <HEAD>
            
          <TITLE> 沖擊多個Input File賦值兼解決中文賦值問題 </TITLE>
          <SCRIPT LANGUAGE="JavaScript">
          //簡化寫法
          function $(id)
          {
              
          return document.getElementById(id);
          }

          //崋值方法(就是將文本框的值賦值file對象)
          function set1()
          {
              
          //將text1中的值復制到剪貼板中
              window.clipboardData.setData('text',$('t1').value); 
              
          //創建Shell(需要添加到信任站點或解除未簽名的ActiveX控件的禁用
              var   WshShell=new   ActiveXObject("WScript.Shell");  
              
          //拿到焦點
              $('f1').focus();
              
          //Ctrl + A 操作
              WshShell.sendKeys("^a");
              
          //Ctrl + V 操作(sendKeys對于中文賦值操作顯得無力,所以只能模擬鍵盤操作)
              WshShell.sendKeys("^v");
          }


          function set2()
          {
              window.clipboardData.setData('text',$('t2').value); 
              
          var   WshShell=new   ActiveXObject("WScript.Shell");  
              $('f2').focus();
              WshShell.sendKeys(
          "^a");
              WshShell.sendKeys(
          "^v");
          }


          function set3()
          {
              window.clipboardData.setData('text',$('t3').value); 
              
          var   WshShell=new   ActiveXObject("WScript.Shell");  
              $('f3').focus();
              WshShell.sendKeys(
          "^a");
              WshShell.sendKeys(
          "^v");
          }


          function set4()
          {
              window.clipboardData.setData('text',$('t4').value); 
              
          var   WshShell=new   ActiveXObject("WScript.Shell");  
              $('f4').focus();
              WshShell.sendKeys(
          "^a");
              WshShell.sendKeys(
          "^v");
          }

          //給當前網頁中四個file對象賦值的方法
          function set()
          {
              
          //此處不要用循環,有幾個就需要寫幾個setXX方法
              setTimeout("set1()",0);
              setTimeout(
          "set2()",70);
              setTimeout(
          "set3()",240);
              setTimeout(
          "set4()",340);
          }

          //檢查是否賦值成功
          function check()
          {
              
          //檢查每個file對象是否為空 
              if($('f1').value.length > 0 && $('f2').value.length > 0 && $('f3').value.length > 0 && $('f4').value.length > 0 )
              
          {
                  
          //檢查原對象的值的賦值對象的值是否相同
                  if($('f1').value == $('t1').value && $('f2').value == $('t2').value && $('f3').value == $('t3').value && $('f4').value == $('t4').value)
                  
          {
                      
          return true;
                  }

                  
          else
                  
          {
                      
          return false;
                  }

              }

              
          else
              
          {
                  
          return false;
              }

          }

          //賦值和file對象的檢查
          function setValues()
          {
              
          if(!check())
              
          {
                  set();
              }

          }

          //直接調用的賦值方法
          function callSet()
          {
              
          //一定要用setInterval,而不能用循環(循環太快,會造成所有的值賦在一個file對象上)
              setInterval('setValues()',1000);
          }


           
          </SCRIPT>
           
          </HEAD>

           
          <BODY>
              
          <input type=text value='c:\a好.jpg' id='t1' /> <br />
              
          <input type=text value='b:\b不好.jpg' id='t2'/> <br />
              
          <input type=text value='c:\c好.jpg' id='t3'/> <br />
              
          <input type=text value='d:\c很好.jpg' id='t4'/> <br />

              
          <input type=file id='f1'/> <br />
              
          <input type=file id='f2'/> <br />
              
          <input type=file id='f3'/> <br />
              
          <input type=file id='f4'/> <br />
              
              
          <input type='button' id='btn1' onclick='callSet();' value='測試'>
           
          </BODY>
          </HTML>


          posted on 2008-09-05 17:09 々上善若水々 閱讀(7340) 評論(8)  編輯  收藏

          評論

          # re: 沖擊多個Input File賦值兼解決中文賦值問題  回復  更多評論   

          好思路 多謝了 長久以來 我也在考慮這個問題 多謝!
          2008-09-08 15:22 | walnutprince

          # re: 沖擊多個Input File賦值兼解決中文賦值問題  回復  更多評論   

          賦值是成功了,但是無法submit,會拒絕訪問啊
          2008-09-22 17:29 | Nickol

          # re: 沖擊多個Input File賦值兼解決中文賦值問題  回復  更多評論   

          可以submit的。注意你安全設置問題。
          2008-09-23 13:46 | 々上善若水々

          # re: 沖擊多個Input File賦值兼解決中文賦值問題  回復  更多評論   

          賦值成功了,但是無法submit,提示拒絕訪問?? 請問如何進行安全配置?
          我已經將服務器IP加入 受信任站點 并將受信任站點的 安全級別設置為-低!!

          謝謝!!
          2009-03-31 17:03 | LCP

          # re: 沖擊多個Input File賦值兼解決中文賦值問題  回復  更多評論   

          @LCP
          在本地Internet中添加可信站點即可.
          2009-04-01 13:16 | 々上善若水々

          # re: 沖擊多個Input File賦值兼解決中文賦值問題  回復  更多評論   

          貌似IE8之后File標簽都不支持手動輸入了
          2012-12-24 13:43 | ant

          # re: 沖擊多個Input File賦值兼解決中文賦值問題  回復  更多評論   

          file類型只讀的,怎么實現粘貼的?
          2013-03-25 15:22 | nbuu

          # re: 沖擊多個Input File賦值兼解決中文賦值問題[未登錄]  回復  更多評論   

          我的只是焦點可以進去 為什么賦值會失敗...
          2014-11-09 11:07 |

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 新田县| 武城县| 武邑县| 宜都市| 曲松县| 郑州市| 西乌| 历史| 湄潭县| 吉林市| 时尚| 平邑县| 板桥市| 新安县| 班玛县| 南靖县| 南江县| 诸暨市| 珠海市| 二手房| 哈尔滨市| 德格县| 太保市| 阳高县| 兴山县| 安顺市| 九寨沟县| 青河县| 竹北市| 那曲县| 易门县| 确山县| 青阳县| 包头市| 岢岚县| 康马县| 德化县| 中超| 海阳市| 永济市| 鹿邑县|