Java-Android-jwebee
          Java-Android-jwebee
          對(duì)IT人來(lái)說(shuō),要成為一個(gè)優(yōu)秀的技術(shù)型管理者,除了需要具備扎實(shí)的技術(shù)基礎(chǔ)之外,還應(yīng)該培養(yǎng)良好的人際關(guān)系能力、談判與溝通技能、客戶關(guān)系與咨詢技能、商業(yè)頭腦和財(cái)務(wù)技能以及創(chuàng)新意識(shí),此外還要有巧妙的激勵(lì)技巧和化解沖突與解決突發(fā)問(wèn)題的能力.
          聲明: 上傳核心代碼采用cos  此版本屬于自己改裝。版權(quán)歸天星網(wǎng)

                  近兩天項(xiàng)目需要改版上傳組件,我仔細(xì)研究了一下各上傳組件的源碼。cos不論從速度還是文件大小方面保持著良好的特性。

                   經(jīng)過(guò)我改裝后的cos可以限制上傳文件類型,返回文件流報(bào)告(ajax使用),假設(shè)讀者已經(jīng)熟悉cos和ajax。可以返回上傳文件名稱,完成百分比,文件傳輸速度,需要總時(shí)間,剩余時(shí)間。
                   以下是部分代碼:
              
          文件1
          <%
             //創(chuàng)建此目錄保存文件
             String saveDirectory = "testfile";
             //每個(gè)文件最大100m,最多3個(gè)文件,所以...
             int maxPostSize = 3 * 100 * 1024 * 1024;
             //命名規(guī)則
             FileRenamePolicy policy = new DateFileRenamePolicy();
             
             HttpFileUPload fileUpload = new HttpFileUPload();
             //編碼
             fileUpload.setEncoding("UTF-8");
             fileUpload.setMaxPostSize(maxPostSize);
             fileUpload.setPolicy(policy);
             fileUpload.setSaveDirectory(saveDirectory);
             //允許上傳文件類型
             fileUpload.setAllowFiles("jpg,gif,mp3,rmvb,wmv,ghs,reg");
             //輸出反饋信息
             try{
              Enumeration files = fileUpload.parseRequest(request);
              while (files.hasMoreElements()) {
               String name = (String) files.nextElement();
               File file = fileUpload.getFile(name);
               if (file != null) {
                out.println("上傳的文件:" + file.getAbsolutePath()+" ");
                out.println("<hr>");
               }
              }
             }catch(Exception e){
              out.println(e.toString()+"<br>");
              out.println("<input type='button' value='重新上傳' onClick=\""+"location='index.jsp'\""+">");
             }finally{
              //清理session
              Thread.sleep(1000);
              fileUpload.dispose();
             }
            %>


          文件2
          <html>
           <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>文件上傳</title>
           </head>
           <body>
            <form name="uploadForm" id="uploadForm" method="post" enctype="multipart/form-data" action="upload.jsp">
             <P>
              <INPUT name="file1" type="file">
             </P>
             <P align="left">
              <INPUT name="file2" type="file">
             </P>
             <p>
              <INPUT name="file3" type="file">
             </p>
             <p>
             </p>
             <p id="show">
             </p>
             <p align="left">
              <input type="button" name="Submit" id="upload" value="上傳" onClick="go();">
             </p>
            </form>
           </body>
          </html>
          <script type="text/javascript">
          function createXMLHttpRequest() {
              if (window.ActiveXObject) {
                  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
              } else {
                  if (window.XMLHttpRequest) {
                      xmlHttp = new XMLHttpRequest();
                  } else {
                  }
              }
          }
          function go() {
              document.uploadForm.submit();
              createXMLHttpRequest();
              var url = "ProgressBarServlet";
              var button = document.getElementById("upload");
              button.disabled = true;
              xmlHttp.open("GET", url, true);
              xmlHttp.onreadystatechange = goCallback;
              xmlHttp.send(null);
           
          }
          function goCallback() {
              if (xmlHttp.readyState == 4) {
                  if (xmlHttp.status == 200) {
                      setTimeout("pollServer()", 2000);
                  }
              }
          }
          function pollServer() {
              createXMLHttpRequest();
              var url = "ProgressBarServlet";
              xmlHttp.open("GET", url, true);
              xmlHttp.onreadystatechange = pollCallback;
              xmlHttp.send(null);
          }
          function pollCallback() {
              if (xmlHttp.readyState == 4) {
                  if (xmlHttp.status == 200) {
                      var completePercent = xmlHttp.responseXML.getElementsByTagName("completePercent")[0].firstChild.data;
                      //百分比
                      var uploadSpeedKB = xmlHttp.responseXML.getElementsByTagName("uploadSpeedKB")[0].firstChild.data;
                      //傳輸速度
                      var remainTimeHMS = xmlHttp.responseXML.getElementsByTagName("remainTimeHMS")[0].firstChild.data;
                      //剩余時(shí)間
                      var totalTimeHMS = xmlHttp.responseXML.getElementsByTagName("totalTimeHMS")[0].firstChild.data;
                      //總時(shí)間
                      var fileName = xmlHttp.responseXML.getElementsByTagName("fileName")[0].firstChild.data;
                      if (completePercent < 100) {
                          document.getElementById("show").innerHTML =
                          fileName + "\uff1b" + completePercent
                          + "% <br>\u901f\u5ea6\uff1a" + uploadSpeedKB +"KB"
                          + "\uff1b<br>\u5269\u4f59\u65f6\u95f4" + remainTimeHMS
                          + "\uff1b<br>\u9700\u8981\uff1a" + totalTimeHMS; 
                          setTimeout("pollServer()", 1000);
                      } else {
                          document.getElementById("show").innerHTML = "\u5b8c\u6210";
                      }
                  }
              }
          }
          </script>

                cos的優(yōu)越性得意于他對(duì)IO流的重寫。BufferedServletInputStream,LimitedServletInputStream,PartInputStream 經(jīng)過(guò)幾次對(duì)原始流的優(yōu)化。詳細(xì)信息請(qǐng)查看cos源碼。


                周行制作   jwebee@163.com 
                 工程文件下載

          jwebee

          我的個(gè)人網(wǎng)站
          posted on 2006-11-15 09:59 周行 閱讀(923) 評(píng)論(0)  編輯  收藏 所屬分類: IT技術(shù)
          Java-Android-jwebee
          主站蜘蛛池模板: 阳山县| 扎赉特旗| 成都市| 丰顺县| 新密市| 老河口市| 镇康县| 延安市| 榆林市| 深泽县| 清镇市| 小金县| 胶州市| 阜南县| 四川省| 朝阳区| 喀什市| 洛阳市| 临沧市| 大城县| 犍为县| 桃园市| 江源县| 道孚县| 奇台县| 五原县| 怀化市| 夹江县| 宁强县| 天祝| 天镇县| 苏尼特左旗| 墨玉县| 错那县| 呼图壁县| 察哈| 台州市| 家居| 米林县| 伊川县| 兴宁市|