package de.unikassel.sdcframework; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.activation.MimeType; import javax.activation.MimeTypeParseException; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class UploadServlet */ public class UploadServlet extends HttpServlet { /** * The serial version id */ private static final long serialVersionUID = -34222475977712947L; /** * The log directory */ private String archive_dir; /** * Default constructor. */ public UploadServlet() {} /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED, "not supported" ); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR ); archive_dir = getServletConfig().getInitParameter( "localpath" ); Long time = System.currentTimeMillis(); String format = "unknown"; MimeType type; try { type = new MimeType( request.getContentType() ); format = type.getSubType(); } catch ( MimeTypeParseException e1 ) { e1.printStackTrace(); } try { String uuid = request.getHeader( "uuid" ); String filePath = new StringBuffer( archive_dir ).append( uuid ) .toString(); String fileName = new StringBuffer(archive_dir).append(uuid) .append("-").append(time).append(".").append(format).toString(); File dir = new File( filePath ); if ( ( dir.exists() && dir.isDirectory() ) || dir.mkdir() ) { FileOutputStream out = new FileOutputStream( new File( fileName ) ); ServletInputStream in = request.getInputStream(); try { byte buffer[] = new byte[1024]; int cnt = in.read( buffer ); while ( cnt != -1 ) { out.write( buffer, 0, cnt ); cnt = in.read( buffer ); } response.setStatus( HttpServletResponse.SC_OK ); } finally { out.close(); in.close(); } } } catch ( Exception e ) { response.sendError( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage() ); } } }