細心!用心!耐心!

          吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學業,五六點粗墨,七八筆買賣,九十道人情。

          BlogJava 聯系 聚合 管理
            1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks

          一個完整的上傳文件bean

           

          import java.io.*;
          import javax.servlet.ServletInputStream;
          import javax.servlet.http.HttpServletRequest;

          public class transfer_multi {
          public String[] sourcefile = new String[255];//源文件名
          public String objectpath = "c:/";//目標文件目錄
          public String[] suffix = new String[255];//文件后綴名
          public String[] objectfilename = new String[255];//目標文件名
          public ServletInputStream sis = null;//輸入流
          public String[] description = new String[255];//描述狀態
          public long size = 100*1024;//限制大小
          private int count = 0;//已傳輸文件數目
          private byte[] b = new byte[4096];//字節流存放數組
          private boolean successful = true;

          public void setSourcefile(HttpServletRequest request) throws java.io.IOException{
          sis = request.getInputStream();
          int a = 0;
          int k = 0;
          String s = "";
          while((a = sis.readLine(b,0,b.length)) != -1){
          s = new String(b,0,a);
          if((k = s.indexOf("filename=")) != -1){
          s = s.substring(k+10);
          k = s.indexOf(""");
          s = s.substring(0,k);
          sourcefile[count] = s;

          k = s.lastIndexOf(".");
          suffix[count] = s.substring(k+1);
          System.out.println(suffix[count]);
          if(canTransfer(count)) transferfile(count);
          }
          if(!successful) break;
          }
          }
          public int getCount(){
          return count;
          }
          public String[] getSourcefile(){
          return sourcefile;
          }

          public void setObjectpath(String objectpath){
          this.objectpath = objectpath;
          }
          public String getObjectpath(){
          return objectpath;
          }
          private boolean canTransfer(int i){
          suffix[i] = suffix[i].toLowerCase();
          //這個是我用來傳圖片的,各位可以把后綴名改掉或者不要這個條件
          if(sourcefile[i].equals("")||(!suffix[i].equals("gif")&&!suffix[i].equals("jpg")&&!suffix[i].equals("jpeg"))) {description[i]="ERR suffix is wrong";return false;}
          else return true;
          }
          private void transferfile(int i){
          String x = Long.toString(new java.util.Date().getTime());
          try{
          objectfilename[i] = x+"."+suffix[i];
          FileOutputStream out = new FileOutputStream(objectpath+objectfilename[i]);
          int a = 0;
          int k = 0;
          long hastransfered = 0;//標示已經傳輸的字節數
          String s = "";
          while((a = sis.readLine(b,0,b.length)) != -1){
          s = new String(b,0,a);
          if((k = s.indexOf("Content-Type:")) != -1) break;
          }
          sis.readLine(b,0,b.length);
          while((a = sis.readLine(b,0,b.length)) != -1){
          s = new String(b,0,a);
          if((b[0]==45)&&(b[1]==45)&&(b[2]==45)&&(b[3]==45)&&(b[4]==45)) break;
          out.write(b,0,a);
          hastransfered+=a;
          if(hastransfered>=size){
          description[count] = "ERR The file "+sourcefile[count]+" is too large to transfer. The whole process is interrupted.";
          successful = false;
          break;
          }
          }
          if(successful) description[count] = "Right The file "+sourcefile[count]+" has been transfered successfully.";
          ++count;
          out.close();
          if(!successful){
          sis.close();
          File tmp = new File(objectpath+objectfilename[count-1]);
          tmp.delete();
          }
          }
          catch(IOException ioe){
          description[i]=ioe.toString();
          }

          }

          public transfer_multi(){
          //可以在構建器里面構建服務器上傳目錄,也可以在javabean調用的時候自己構建
          setObjectpath("/home/www/jspvhost4/web/popeyelin/images/");
          }
          }

          posted on 2007-05-06 12:58 張金鵬 閱讀(83) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 新绛县| 团风县| 绥阳县| 凉山| 万全县| 阿鲁科尔沁旗| 阿拉善右旗| 饶阳县| 芮城县| 南康市| 安顺市| 康定县| 股票| 黄陵县| 达州市| 陆丰市| 沂南县| 南昌县| 临清市| 廊坊市| 泾源县| 石首市| 洞头县| 博野县| 南木林县| 沿河| 寿光市| 青海省| 独山县| 普兰店市| 林芝县| 开原市| 洛浦县| 冀州市| 梁河县| 石河子市| 靖江市| 剑河县| 成安县| 讷河市| 饶平县|