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

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


          網站導航:
           
          主站蜘蛛池模板: 乌兰县| 英德市| 桃江县| 古浪县| 伊川县| 原平市| 南华县| 绍兴市| 鄢陵县| 鄯善县| 珲春市| 南雄市| 上林县| 平乐县| 繁昌县| 霍山县| 瓦房店市| 汶上县| 太湖县| 德兴市| 寿阳县| 康乐县| 黄冈市| 海城市| 黄平县| 双鸭山市| 景东| 齐河县| 志丹县| 四子王旗| 永登县| 上饶县| 日喀则市| 石家庄市| 邵东县| 临夏市| 宁强县| 宁陕县| 额敏县| 剑川县| 岳池县|