細心!用心!耐心!

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

          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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 博野县| 曲松县| 襄垣县| 沙坪坝区| 田林县| 潜山县| 札达县| 五河县| 蓬安县| 长治县| 玉林市| 玛曲县| 贺兰县| 上虞市| 象州县| 赤水市| 抚宁县| 克山县| 浦北县| 株洲县| 三亚市| 常德市| 郸城县| 许昌市| 阿拉善右旗| 河北区| 达州市| 漳平市| 兴安盟| 杭锦旗| 城步| 南川市| 金门县| 伊通| 安义县| 桑植县| 紫金县| 灵台县| 台湾省| 阳原县| 达拉特旗|