public class MultipartEncodeFilter extends BaseEncodeFilter {
  public MultipartEncodeFilter() { }
  public void doFilter(javax.servlet.ServletRequest servletRequest,
                       javax.servlet.ServletResponse servletResponse,
                       javax.servlet.FilterChain filterChain)
                       throws java.io.IOException, 
                       javax.servlet.ServletException {
    String contentType = servletRequest.getContentType();   
    // Stosujemy filtr tylko dla kodowania wieloczciowego 
   if (contentType.startsWith("multipart/form-data")){
     try {
       String uploadFolder = getFilterConfig().getInitParameter("UploadFolder");
       if (uploadFolder == null) uploadFolder = ".";
       /** Klasa MultipartRequest autorstwa Jasona Huntera 
       Copyright (C) 2001 Jason Hunter 
       <jhunter@servlets.com>. Wszelkie prawa zastrzeone. 
       **/
       MultipartRequest multi = new MultipartRequest(servletRequest, 
                                     uploadFolder,1 * 1024 * 1024 );
       Enumeration params = multi.getParameterNames();
       while (params.hasMoreElements()) {
         String name = (String)params.nextElement();
         String value = multi.getParameter(name);
         servletRequest.setAttribute(name, value);
       }
       Enumeration files = multi.getFileNames();
       while (files.hasMoreElements()) {
         String name = (String)files.nextElement();
         String filename = multi.getFilesystemName(name);
         String type = multi.getContentType(name);
         File f = multi.getFile(name);
         // W tym miejscu w razie koniecznoci wykonujemy co na pliku
       }
     } catch (IOException e) {
       LogManager.logMessage("bd odczytu lub zapisu pliku "+ e);
     }
   } // koniec if
   filterChain.doFilter(servletRequest, servletResponse);
  } // koniec metody doFilter()
}
