package com.processpuzzle.file.control; import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.util.Iterator; import java.util.List; import java.util.Vector; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.DiskFileUpload; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUpload; import org.apache.commons.fileupload.FileUploadException; //ez az osztaly ez miatt lett elkeszitve: http://www.jguru.com/faq/view.jsp?EID=1045507 //ha kell, atirhato mas megoldasra public class MultipartManager { private HttpServletRequest request; private List<?> formItems; private boolean wasParse = false; public MultipartManager( HttpServletRequest request ) { this.request = request; } public boolean isMultipartContent() { // String contentType=request.getContentType(); // if (contentType!=null && // contentType.toLowerCase().indexOf("multipart/form-data")>-1) return FileUpload.isMultipartContent( request ); } public void processRequest() { if( wasParse ) return; DiskFileUpload upload = new DiskFileUpload(); // setting up configuration // upload.setSizeThreshold(yourMaxMemorySize); // upload.setSizeMax(yourMaxRequestSize); // upload.setRepositoryPath("c:/temp");//!!!!!!!! try{ formItems = upload.parseRequest( request ); List<FileItem> fileItems = new Vector<FileItem>(); Iterator<?> i = formItems.iterator(); while( i.hasNext() ){ FileItem item = (FileItem) i.next(); if( !item.isFormField() ){ // file field fileItems.add( item ); } } request.setAttribute( "mmFileItems", fileItems ); }catch( FileUploadException e ){ e.printStackTrace(); // ezt is meg meg kell irni } wasParse = true; } public List<?> getFormItems() { if( wasParse ) return formItems; else return null; } public String getParameter( String parameter ) { if( wasParse ){ Iterator<?> i = formItems.iterator(); while( i.hasNext() ){ FileItem item = (FileItem) i.next(); if( item.isFormField() ){ // it is work only for fields, not on // file items if( item.getFieldName().equals( parameter ) ) try{ return item.getString( "UTF-8" ); }catch( UnsupportedEncodingException e ){ // e.printStackTrace(); return item.getString(); } } } } return null; } public FileItem getFileItem( String parameter ) { if( wasParse ){ Iterator<?> i = formItems.iterator(); while( i.hasNext() ){ FileItem item = (FileItem) i.next(); if( !item.isFormField() ){ // it is work only for file items, not on // fields if( item.getFieldName().equals( parameter ) ) return item; } } } return null; } public static String getUTF8( String string ) { CharsetDecoder decoder = Charset.forName( "UTF-8" ).newDecoder(); ByteBuffer byteBuffer = ByteBuffer.wrap( string.getBytes() ); CharBuffer charBuffer = null; try{ charBuffer = decoder.decode( byteBuffer ); }catch( CharacterCodingException e ){ return string; } return charBuffer.toString(); } }