posts - 15,  comments - 5,  trackbacks - 0

          轉自http://blog.csdn.net/hudou_k/archive/2005/10/17/507960.aspx

            1package linkman.helper;
            2
            3import java.io.*;
            4import java.util.*;
            5import javax.servlet.http.HttpServletRequest;
            6import javax.servlet.http.HttpServletResponse;
            7import javax.servlet.ServletInputStream;
            8
            9public class UpLoadBean {
           10 private String SavePath = null;
           11 private String FileName = null;
           12 private String Sperator = null;
           13 private String ErrMsg = "正常返回";
           14 
           15 private byte[] bt = new byte[4096];
           16 private byte[] prebt = new byte[4096];
           17 private int t = -1;
           18 private long FileSize = -1;
           19 private boolean UserDefineFileName = false;
           20 
           21 /////////////////////////////////////////////////
           22 public UpLoadBean () {
           23  FileName = bringFileName ();
           24 }

           25 public UpLoadBean (String savepath) {
           26  SavePath = savepath;
           27  FileName = bringFileName ();
           28 }

           29 
           30 /////////////////////////////////////////////////
           31 // 文件名信息
           32 private String bringFileName () {
           33  Calendar dt = Calendar.getInstance ();
           34  String str = "" + dt.get (Calendar.YEAR) + dt.get (Calendar.MONTH) + dt.get (Calendar.DAY_OF_MONTH);
           35  str = str + dt.get (Calendar.HOUR) + dt.get (Calendar.MINUTE) + dt.get (Calendar.SECOND);
           36  return str;
           37 }

           38 
           39 public void setFileName (String filename) {
           40  FileName = filename;
           41  UserDefineFileName = true;
           42 }

           43 public String getFileName () {
           44  return FileName;
           45 }

           46 /////////////////////////////////////////////////
           47 // 上傳文件主程序
           48 public boolean UpLoad (HttpServletRequest request) throws Exception {
           49  if (SavePath == null{
           50   setErrorMessage ("未設置保存上傳文件的路徑");
           51   return false;
           52  }

           53  request.setCharacterEncoding("utf-8");
           54  ServletInputStream in = request.getInputStream ();
           55  ////////////////////////////////////////////
           56  // 獲取得一行的分隔標志
           57  t = in.readLine (bt, 0, bt.length);
           58  if (t != -1{
           59   Sperator = new String (bt, 0, t);
           60   Sperator = Sperator.substring (028);
           61   t = -1;
           62  }

           63  
           64  ////////////////////////////////////////////
           65  // 取擴展名并設定文件全名
           66  do {
           67   t = in.readLine (bt, 0, bt.length);
           68   String s = new String (bt, 0, t);
           69   int index = s.indexOf ("filename=\"");
           70   if (index != -1{
           71    s = s.substring (index + 10);
           72    index = s.indexOf ("\"");
           73    s = s.substring (0, index);
           74    index = s.lastIndexOf (".");
           75    if (!UserDefineFileName) {
           76     FileName = FileName + s.substring (index); // 設定文件全名
           77    }

           78    t = -1;
           79   }

           80  }
           while (t != -1);
           81  
           82  ////////////////////////////////////////////
           83  // 取文件內容
           84  FileOutputStream out = new FileOutputStream (SavePath + "\\" + FileName);
           85  
           86  t = in.readLine (bt, 0, bt.length);
           87  String s = new String (bt, 0, t);
           88  int i = s.indexOf ("Content-Type:");
           89  if (i == -1{
           90   setErrorMessage ("上傳的不是文件");
           91   return false;
           92  }
           else {
           93   in.readLine (bt, 0, bt.length); // 去掉一個空行
           94   t = -1;
           95  }

           96  
           97  boolean state = true;
           98  long trancsize = 0;
           99  try {
          100   t = in.readLine (bt, 0, bt.length);
          101   while (t != -1{
          102    s = new String (bt, 0, t);
          103    if (s.length () > 28{
          104     s = s.substring (028);
          105     if (s.equals (Sperator)) {
          106      break;
          107     }

          108    }

          109    
          110    /*
          111     if (bt[0] == 45 && bt[1] == 45 && bt[2] == 45 && bt[3] == 45 && bt[4] == 45) {
          112      break;
          113     }
          114    */

          115    if (FileSize != -1{
          116     if (trancsize >= FileSize) {
          117      throw new Exception ("上傳文件太大");
          118     }

          119    }

          120    out.write (bt, 0, t);
          121    trancsize += t;
          122    t = in.readLine (bt, 0, bt.length);
          123   }

          124  }
           catch (Exception e) {
          125   state = false;
          126   out.close ();
          127   setErrorMessage (e.getMessage ());
          128   File tmp = new File (SavePath, FileName);
          129   if (!tmp.delete()) {
          130    setErrorMessage (e.getMessage () + ",清除未完成");
          131   }

          132  }
           finally {
          133   if (state) {
          134    out.close ();
          135   }

          136   return state;
          137  }

          138 }

          139 /////////////////////////////////////////////////
          140 // 上傳文件錯誤信息
          141 public void setErrorMessage (String errormessage) {
          142  ErrMsg = errormessage;
          143 }

          144 public String getErrorMessage () {
          145  return ErrMsg;
          146 }

          147 /////////////////////////////////////////////////
          148 // 文件大小信息
          149 public void setFileSize (long size) {
          150  FileSize = size;
          151 }

          152 
          153 public long getFileSize () {
          154  return FileSize;
          155 }

          156}
          // end class
          157
          158
          posted on 2005-10-18 21:43 MudFish 閱讀(300) 評論(0)  編輯  收藏 所屬分類: JSP

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


          網站導航:
           
          主站蜘蛛池模板: 南汇区| 司法| 汤阴县| 古交市| 鄂托克前旗| 精河县| 合江县| 观塘区| 齐齐哈尔市| 西林县| 庆阳市| 太仓市| 浦县| 岳池县| 德保县| 夹江县| 潜江市| 龙口市| 宿松县| 平阳县| 泰安市| 房产| 谢通门县| 绥阳县| 梅河口市| 津南区| 湘阴县| 扎鲁特旗| 白河县| 琼海市| 北京市| 常德市| 临漳县| 洛宁县| 峨山| 图们市| 渝北区| 丰镇市| 乐平市| 桂东县| 安龙县|