cAng^Er

          不懂我的人 , 離不了我 , 該了解了解我 !而懂我的人 , 更離不了我 , 因為他們愛我 。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            30 隨筆 :: 16 文章 :: 18 評論 :: 0 Trackbacks

           用webwork框架做upload的java讀取代碼
              我的語言表達能力不是很好,說也許說不明白,可能給看的說得糊涂了,同樣
          這個對做上傳得新手很有用,不啰嗦了,先寫代碼吧:一共4個地方要弄,
          前臺,后臺,xwork和webwork.properties
          前臺:
          upload.jsp:
          =================================================================
          <%--
            Created by IntelliJ IDEA.
            User: lvjiachun
            Date: 2006-5-3
            Time: 9:32:35
            To change this template use File | Settings | File Templates.
          --%>
          <%@ page contentType="text/html;charset=utf-8" language="java" %>
          <%@ taglib prefix="ww" uri="/webwork" %>
          <html>
          <head><title>upload</title></head>
          <body><p align="center">
              <ww:form action="upload.action" name="upload" method="post" enctype="multipart/form-data">
                  <ww:file name="file1" value="瀏覽" label="ReadFile"/>
                  <ww:file name="file2" value="瀏覽" label="ReadFile"/>
                  <ww:file name="file3" value="瀏覽" label="ReadFile"/>
                  <ww:file name="file4" value="瀏覽" label="ReadFile"/>
                  <ww:textfield name="model.fileURL" label="Road"/>  //指定上傳得文件保存到哪里
                  <ww:submit/>
              </ww:form></p>
          </body>
          </html>
          =======================================================================
          upload-success.jsp
          =======================================================================
          <%--
            Created by IntelliJ IDEA.
            User: lvjiachun
            Date: 2006-5-3
            Time: 9:38:04
            To change this template use File | Settings | File Templates.
          --%>
          <%@ page contentType="text/html;charset=utf-8" language="java" %>
          <%@ taglib prefix="ww" uri="/webwork" %>
          <html>
          <head><title>upload-success</title></head>

          <body>
          <p align="center">
              你已經上傳成功,
              <a href="upload.jsp">請返回</a>
          </p>
          </body>
          </html>
          ========================================================================
          后臺:一共需要三個4個java文件
          1.  <FileMes>
          package upload.until;

          /**
           * Created by IntelliJ IDEA.
           * User: lvjiachun
           * Date: 2006-5-3
           * Time: 7:51:11
           * To change this template use File | Settings | File Templates.
           */
          public class FileMes {
              private String fileName;

              public String getFileName() {
                  return fileName;
              }

              public void setFileName(String fileName) {
                  this.fileName = fileName;
              }

              public String getFilePath() {
                  return filePath;
              }

              public void setFilePath(String filePath) {
                  this.filePath = filePath;
              }

              private String filePath;
          }
          2.<FileSelect >
          package upload.until;

          /**
           * Created by IntelliJ IDEA.
           * User: lvjiachun
           * Date: 2006-5-3
           * Time: 7:51:23
           * To change this template use File | Settings | File Templates.
           */
          public class FileSelect {
              private String fileName;
              private String fileURL;
              private String type;

              public String getFileName() {
                  return fileName;
              }

              public void setFileName(String fileName) {
                  this.fileName = fileName;
              }

              public String getFileURL() {
                  return fileURL;
              }

              public void setFileURL(String fileURL) {
                  this.fileURL = fileURL;
              }

              public String getType() {
                  return type;
              }

              public void setType(String type) {
                  this.type = type;
              }
          }
          3.<UploadUntil >
          package upload.until;

          import com.opensymphony.webwork.dispatcher.multipart.MultiPartRequestWrapper;
          import com.opensymphony.webwork.dispatcher.multipart.MultiPartRequest;
          import com.opensymphony.webwork.ServletActionContext;

          import java.util.List;
          import java.util.ArrayList;
          import java.util.Enumeration;
          import java.util.Calendar;
          import java.io.*;

          /**
           * Created by IntelliJ IDEA.
           * User: lvjiachun
           * Date: 2006-5-3
           * Time: 7:51:00
           * To change this template use File | Settings | File Templates.
           */
          public class UploadUntil {
              public static List<FileMes> Upload(String smallPath) throws IOException {
                  List<FileMes> fileMesList = new ArrayList<FileMes>();
                  String path = smallPath;
                  System.out.println("PATH 2:" + path);
                  MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) ServletActionContext.getRequest();
                  if (multiWrapper == null) return null;
                  Enumeration e = multiWrapper.getFileNames();
                  int i = 0;
          //===============================================================//
                  //這個是單文件上傳的代碼;!!如果想做單文件上傳,把注釋掉的代碼去掉就可以了
          //        while (e.hasMoreElements()) {
          //            String inputValue = (String) e.nextElement();
          //            String contentType = multiWrapper.getContentType(inputValue);
          //            String flie1 = multiWrapper.getFilesystemName(inputValue);
          //            String fileName = flie1;
          //            System.out.println("FileName underfinded:" + fileName);
          //            String savePath = path + fileName;
          //            File file = multiWrapper.getFile(inputValue);
          //            if (file != null) {
          //                InputStream inStream = new FileInputStream(file.getPath());
          //                FileMes fm = new FileMes();
          //                fm.setFileName(flie1);
          //                System.out.println("FileName:" + fm.getFileName());
          //                System.out.println("SmallPath in UploadUntil.java" + smallPath);
          //                fm.setFilePath(smallPath + fileName);
          //                System.out.println("FilePath:" + fm.getFilePath());
          //                fileMesList.add(fm);
          //                System.out.println("SavePath:" + savePath);
          //                FileOutputStream fs = new FileOutputStream(savePath);
          //                byte[]buffer = new byte[1444];
          //                int length;
          //                int bytesum = 0;
          //                int byteread = 0;
          //                while ((byteread = inStream.read(buffer)) != -1) {
          //                    bytesum += byteread;
          //                    fs.write(buffer, 0, byteread);
          //                }
          //============================================================//
          // 下面這個是多文件上傳-------------------
                  while (e.hasMoreElements()) {
                      String inputValue = (String) e.nextElement();
                      String contentType = multiWrapper.getContentType(inputValue);
                      String flie1 = multiWrapper.getFilesystemName(inputValue);
                      String fileName = Calendar.getInstance().getTime().getTime() + "-" + i + flie1;
                      String savePath = path + fileName;
                      File file = multiWrapper.getFile(inputValue);
                      if (file != null) {
                          InputStream inStream = new FileInputStream(file.getPath()); //讀入原文件
                          FileMes fm = new FileMes();
                          fm.setFileName(flie1);
                          fm.setFilePath(smallPath + fileName);
                          fileMesList.add(fm);
                          FileOutputStream fs = new FileOutputStream(savePath);
                          byte[] buffer = new byte[1444];
                          int length;
                          int bytesum = 0;
                          int byteread = 0;
                          while ((byteread = inStream.read(buffer)) != -1) {
                              bytesum += byteread; //字節數 文件大小
                              fs.write(buffer, 0, byteread);
                          }
          //==============================================================//
                          inStream.close();   //關閉輸入流
                          i++;
                          if (file.exists()) {
                              file.delete();
                          }   //如果上傳的文件存在則將其刪除;
                      }

                  }
                  return fileMesList;
              }
          }
          4.也就是最后一個,action<UploadfilesAction>
          package upload.fileupload;

          import com.opensymphony.xwork.ActionSupport;
          import com.opensymphony.xwork.Action;
          import com.opensymphony.xwork.ModelDriven;
          import upload.until.FileSelect;

          /**
           * Created by IntelliJ IDEA.
           * User:lvjiachun
           * Date: 2006-5-3
           * Time: 7:52:34
           * To change this template use File | Settings | File Templates.
           */
          public class UploadfilesAction extends ActionSupport implements Action, ModelDriven {
              FileSelect fileMes = new FileSelect();

              public String upload() throws Exception {
                  String smallPath = fileMes.getFileURL();
                  System.out.println(smallPath+"xiaosao");
                  java.io.File myFilePath = new java.io.File(smallPath);
                  if (smallPath != null) {
                      if (!myFilePath.exists()) {
                          myFilePath.mkdir();
                          System.out.println("*******MaKe DIR!*********");
                      }
                  }
                  upload.until.UploadUntil.Upload(smallPath);
                  return SUCCESS;

              }
              public Object getModel() {
                  return fileMes;  //To change body of implemented methods use File | Settings | File Templates.
              }
          }
          **********************************************************************
          xwork中
          <?xml version="1.0" encoding="utf-8"?>
          <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "
          http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
          <xwork>
              <include file="webwork-default.xml"/>
              <package name="upload" extends="webwork-default">
                  <interceptors>
                      <interceptor name="upload" class="com.opensymphony.webwork.interceptor.FileUploadInterceptor"/>
                      <interceptor-stack name="uploadStack">
                          <interceptor-ref name="upload"/>
                          <interceptor-ref name="defaultStack"/>
                      </interceptor-stack>
                  </interceptors>
                  <default-interceptor-ref name="WSStack"/>
              
                  <action name="upload" class="upload.fileupload.UploadfilesAction" method="upload">
                      <result name="success">
                          <param name="location">/upload/upload-success.jsp</param>
                      </result>
                      <interceptor-ref name="uploadStack"/>
                      <interceptor-ref name="model-driven"/>
                  </action>
              </package>
          </xwork>
          webwork.properties
          在webwork.properties中要加上這段代碼
          webwork.multipart.parser=com.opensymphony.webwork.dispatcher.multipart.PellMultiPartRequest
          webwork.multipart.saveDir=d:\\  #這個是上傳文件的默認保存路徑#

          xiaosao:具體的解析過程不是我寫的,是我工作室boss寫的,我也沒那個能力!具體怎么用
          看代碼就足夠了,這個是我在做上傳得時候用到的,開始做的時候沒有任何思路,在網上找
          也沒找到,憋了半個月也沒弄出來,用webwork可以得到上傳得文件,但傳得內容只有upload這
          幾個字(傳txt時候),后來才清楚是要解析過程的,后臺的前三段代碼就是解析過程,我是個新
          手,這個東西做的讓我腦袋都大了,為了大家方便,發到這里,有需要的來看一下!代碼是好
          使得,需要自己認真調試!有什么不足給點意見

          posted on 2006-05-11 09:43 cAng^Er 閱讀(1269) 評論(2)  編輯  收藏 所屬分類: |:Web View:|

          評論

          # re: 用webwork框架做upload的java讀取代碼 2006-11-30 14:01 ww
          上傳的功能好用, 我是想在上傳文件的同時,在存入數據庫中,怎么不能返回呢? 就是在你的return fileMesList;中去不到文件的名稱。為什么,我是新手,誰知道,請告訴我,先謝謝了。  回復  更多評論
            

          # re: 用webwork框架做upload的java讀取代碼 2006-12-05 14:14 cAng^Er
          @ww
          不好意思阿,好幾天沒有上博客了,今天在做新聞管理系統,測試友情鏈接的時候才發現,你把你的聯系方式給我,或者看到了加我的QQ:6826462  回復  更多評論
            

          主站蜘蛛池模板: 监利县| 青田县| 阿巴嘎旗| 静安区| 普洱| 朝阳县| 临桂县| 怀化市| 砚山县| 乌什县| 万山特区| 读书| 白银市| 麦盖提县| 文昌市| 唐河县| 扎赉特旗| 西吉县| 三门峡市| 安平县| 蒲江县| 嘉祥县| 通渭县| 孙吴县| 正宁县| 抚顺市| 理塘县| 通辽市| 常宁市| 家居| 汾阳市| 荥阳市| 兴国县| 道孚县| 镇康县| 来宾市| 安义县| 虹口区| 专栏| 德阳市| 安远县|