orsen成長錄

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            3 隨筆 :: 2 文章 :: 0 評論 :: 0 Trackbacks

          Struts實現文件上傳
          ---------------------------單文件--------------------------------------
          -----jsp頁面 一定要加入enctype和method為post

          1<html:form action="/fileUpLoad" method="post" enctype="multipart/form-data">  
          2    FileName: <html:text property="filename" /><br>    
          3    File:<html:file property="file"/><br>
          4        <html:submit />
          5</html:form>
          -----form中包含個文件屬性
          public class FileUpLoadForm extends ActionForm {
              
          private String filename;
              
          private FormFile file; //這個要記住,這是Struts把文件給封裝了。
              public String getFilename() {
                  
          return filename;
              }

              
          public void setFilename(String filename) {
                  
          this.filename = filename;
              }

              
          public FormFile getFile() {
                  
          return file;
              }

              
          public void setFile(FormFile file) {
                  
          this.file = file;
              }
              
          }
          ----action中要用二進制來操作文件。如果要寫入數據庫的話,其實也不太難,用到PreparedStatement進行操作。只貼出來主要代碼,部分省略。
          FileUpLoadForm files = (FileUpLoadForm)form;
              String filename 
          = files.getFilename();
              String realname 
          = files.getFile().getFileName();
              System.out.println(
          "用戶文件名:" +filename + "       真實文件名:" +realname);
              
          byte[] bytes= files.getFile().getFileData();
              OutputStream out 
          = new FileOutputStream("c://"+realname);
              out.write(bytes);
              out.flush();
              out.close();

          --改進形式
              byte[] bytes= new byte[2048]; //每次都2M的讀寫
              InputStream in = files.getFile().getInputStream();
              OutputStream out 
          = new FileOutputStream("c://"+realname);
              
          int i = 0;
              
          while( (i = in.read(bytes, 02048)) != -1){
                  out.write(bytes);
              }

              out.flush();
              out.close();
          -------------------------------多文件-----------------------------------
          本人思路是通過不同的表單屬性的名字來區分,和一般從form給vo賦值一樣,取一個判斷一個,
          但是可以吧保存上傳的文件操作 可以封裝成一個類或者方法,達到重用。
          posted on 2009-09-23 20:02 Orsen 閱讀(99) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 门头沟区| 濮阳县| 惠东县| 巨野县| 元阳县| 云浮市| 唐海县| 桦川县| 遂昌县| 航空| 长寿区| 乐都县| 宁晋县| 巍山| 定兴县| 洛南县| 叶城县| 斗六市| 中卫市| 百色市| 万盛区| 柘荣县| 额尔古纳市| 武乡县| 榕江县| 奉化市| 阿克陶县| 北碚区| 西青区| 武威市| 九江市| 浪卡子县| 常熟市| 通城县| 安泽县| 郓城县| 贵港市| 曲松县| 临洮县| 西乌| 承德市|