Hibernate進行時

          有關Hibenrate及其相關工具的主頁
          隨筆 - 0, 文章 - 16, 評論 - 29, 引用 - 0
          數(shù)據(jù)加載中……

          上傳工具Cos的源代碼學習

          使用Cos時,可以使用兩個類來進行上傳工作:
          1.  MultipartRequest
          2.  MultipartParser
             一般情況下會使用MultipartRequest類,我感覺它比MultipartParser更方便一些(事實上MultipartRequest封裝了MultipartParser),在構造MultipartRequest實例時,構造了MultipartParser實例(構造parser的過程取得了上傳的數(shù)據(jù)流引用,但并未真正讀取)。
             然后通過MultipartParser的readNextPart()方法,從request流中讀取數(shù)據(jù),區(qū)別出流中的參數(shù)域和文件域,如果是參數(shù)的話用ParamPart類封裝;如果是文件的話用FilePart封裝。
             此時如果設置了重命名策略的話,則在服務器端新建一個新命名的空文件,然后調(diào)用FilePart的writeTo(saveDir)方法將流數(shù)據(jù)寫到磁盤中。至此,文件上傳完成。

          下面是使用MultipartRequest的上傳類示例:

          /*
           * DemoUploadServlet.java
           *
           * Example servlet to handle file uploads using MultipartRequest for
           * decoding the incoming multipart/form-data stream
           
          */

           
          import java.util.Enumeration;
          import javax.servlet.*;
          import javax.servlet.http.*;
          import java.io.*;

          import com.oreilly.servlet.MultipartRequest;
          import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;

          public class DemoRequestUploadServlet extends HttpServlet {
            
          private String dirName;
            
            
          public void init(ServletConfig config) throws ServletException {
              
          super.init(config);
              
          // read the uploadDir from the servlet parameters
              dirName = config.getInitParameter("uploadDir");
              
          if (dirName == null{
                
          throw new ServletException("Please supply uploadDir parameter");
              }

            }

            
            
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                
          throws ServletException, IOException {
              PrintWriter out 
          = response.getWriter();
              response.setContentType(
          "text/plain");
              out.println(
          "Demo Upload Servlet using MultipartRequest");
              out.println();
                
              
          try {
                
          // Use an advanced form of the constructor that specifies a character
                
          // encoding of the request (not of the file contents) and a file
                
          // rename policy.
                MultipartRequest multi = 
                  
          new MultipartRequest(request, dirName, 10*1024*1024,
                                       
          "ISO-8859-1"new DefaultFileRenamePolicy());
                  
                out.println(
          "PARAMS:");
                Enumeration params 
          = multi.getParameterNames();
                
          while (params.hasMoreElements()) {
                  String name 
          = (String)params.nextElement();
                  String value 
          = multi.getParameter(name);
                  out.println(name 
          + "=" + value);
                }

                out.println();
                        
                out.println(
          "FILES:");
                Enumeration files 
          = multi.getFileNames();
                
          while (files.hasMoreElements()) {
                  String name 
          = (String)files.nextElement();
                  String filename 
          = multi.getFilesystemName(name);
                  String originalFilename 
          = multi.getOriginalFileName(name);
                  String type 
          = multi.getContentType(name);
                  File f 
          = multi.getFile(name);
                  out.println(
          "name: " + name);
                  out.println(
          "filename: " + filename);
                  out.println(
          "originalFilename: " + originalFilename);
                  out.println(
          "type: " + type);
                  
          if (f != null{
                    out.println(
          "f.toString(): " + f.toString());
                    out.println(
          "f.getName(): " + f.getName());
                    out.println(
          "f.exists(): " + f.exists());
                    out.println(
          "f.length(): " + f.length());
                  }

                  out.println();
                }

              }
           
              
          catch (IOException lEx) {
                
          this.getServletContext().log(lEx, "error reading or saving file");
              }

            }

          }

          下面是使用MultipartParser的代碼示例:
          /*
           * DemoParserUploadServlet.java
           *
           * Example servlet to handle file uploads using MultipartParser for
           * decoding the incoming multipart/form-data stream
           
          */

           
          import javax.servlet.*;
          import javax.servlet.http.*;
          import java.io.*;

          import com.oreilly.servlet.multipart.*;

          public class DemoParserUploadServlet extends HttpServlet {
            
          private File dir;
            
            
          public void init(ServletConfig config) throws ServletException {
              
          super.init(config);
              
          // Read the uploadDir from the servlet parameters
              String dirName = config.getInitParameter("uploadDir");
              
          if (dirName == null{
                
          throw new ServletException("Please supply uploadDir parameter");
              }

              dir 
          = new File(dirName);
              
          if (! dir.isDirectory()) 
                
          throw new ServletException("Supplied uploadDir " + dirName +
                                           
          " is invalid");
              }

            }

            
            
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                
          throws ServletException, IOException {
              PrintWriter out 
          = response.getWriter();
              response.setContentType(
          "text/plain");
              out.println(
          "Demo Upload Servlet using MultipartParser");
              out.println();
                
              
          try {
                MultipartParser mp 
          = new MultipartParser(request, 10*1024*1024); // 10MB
                Part part;
                
          while ((part = mp.readNextPart()) != null{
                  String name 
          = part.getName();
                  
          if (part.isParam()) {
                    
          // it's a parameter part
                    ParamPart paramPart = (ParamPart) part;
                    String value 
          = paramPart.getStringValue();
                    out.println(
          "param: name=" + name + "; value=" + value);
                  }

                  
          else if (part.isFile()) {
                    
          // it's a file part
                    FilePart filePart = (FilePart) part;
                    String fileName 
          = filePart.getFileName();
                    
          if (fileName != null{
                      
          // the part actually contained a file
                      long size = filePart.writeTo(dir);
                      out.println(
          "file: name=" + name + "; fileName=" + fileName +
                        
          ", filePath=" + filePart.getFilePath() + 
                        
          ", contentType=" + filePart.getContentType() + 
                        
          ", size=" + size);
                    }

                    
          else 
                      
          // the field did not contain a file
                      out.println("file: name=" + name + "; EMPTY");
                    }

                    out.flush();
                  }

                }

              }
           
              
          catch (IOException lEx) {
                
          this.getServletContext().log(lEx, "error reading or saving file");
              }

            }

          }

          posted on 2006-02-13 09:58 caixuetao 閱讀(1339) 評論(0)  編輯  收藏


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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 芦山县| 抚远县| 连江县| 大新县| 长乐市| 咸宁市| 巴马| 肇东市| 苏州市| 五大连池市| 马关县| 汽车| 屯留县| 浦江县| 万年县| 南陵县| 集安市| 凤阳县| 崇文区| 察哈| 阳东县| 鄂托克旗| 镇安县| 诏安县| 呼图壁县| 电白县| 太谷县| 西藏| 濉溪县| 天峨县| 贺兰县| 北宁市| 阿坝县| 博客| 辉南县| 安平县| 封丘县| 平和县| 平潭县| 四平市| 嫩江县|