package com.oFFca.servlet; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.jar.Attributes; import java.util.jar.Manifest; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; @WebServlet("/UploadDownloadFileServlet") public class UploadDownloadFileServlet extends HttpServlet { private static final long serialVersionUID = 1L; private ServletFileUpload uploader = null; @Override public void init() throws ServletException{ DiskFileItemFactory fileFactory = new DiskFileItemFactory(); File filesDir = (File) getServletContext().getAttribute("FILES_DIR_FILE"); fileFactory.setRepository(filesDir); this.uploader = new ServletFileUpload(fileFactory); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String fileName = request.getParameter("fileName"); if(fileName == null || fileName.equals("")){ throw new ServletException("File Name can't be null or empty"); } File file = new File(request.getServletContext().getAttribute("FILES_DIR")+File.separator+fileName); if(!file.exists()){ throw new ServletException("File doesn't exists on server."); } System.out.println("File location on server::"+file.getAbsolutePath()); ServletContext ctx = getServletContext(); InputStream fis = new FileInputStream(file); String mimeType = ctx.getMimeType(file.getAbsolutePath()); response.setContentType(mimeType != null? mimeType:"application/octet-stream"); response.setContentLength((int) file.length()); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); ServletOutputStream os = response.getOutputStream(); byte[] bufferData = new byte[1024]; int read=0; while((read = fis.read(bufferData))!= -1){ os.write(bufferData, 0, read); } os.flush(); os.close(); fis.close(); System.out.println("File downloaded at client successfully"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(!ServletFileUpload.isMultipartContent(request)){ throw new ServletException("Content type is not multipart/form-data"); } response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.write(""); try { List fileItemsList = uploader.parseRequest(request); Iterator fileItemsIterator = fileItemsList.iterator(); while(fileItemsIterator.hasNext()){ FileItem fileItem = fileItemsIterator.next(); System.out.println("FieldName="+fileItem.getFieldName()); System.out.println("FileName="+fileItem.getName()); System.out.println("ContentType="+fileItem.getContentType()); System.out.println("Size in bytes="+fileItem.getSize()); String basePath=(String) request.getServletContext().getAttribute("FILES_DIR"); String path=(String)request.getServletContext().getAttribute("SAFE_FILE_NAME"); System.out.println(basePath+path); File file = new File(basePath+File.separator+path); System.out.println("Absolute Path at server="+file.getAbsolutePath()); fileItem.write(file); out.write("File "+fileItem.getName()+ " uploaded successfully."); out.write("
"); String line=""; boolean result = false; boolean display = false; int k = Integer.MAX_VALUE; try{ k= Integer.parseInt((String) request.getServletContext().getAttribute("K")); } catch(Exception ex){} String arg[] = {"bash", "-c", (String) request.getServletContext().getAttribute("PDF_SCRIPT")+" " +file.getAbsolutePath()+" " +(String) request.getServletContext().getAttribute("PDF_PROGRAMS")+" " +(String) request.getServletContext().getAttribute("GROUP_DIR")+" " +(String) request.getServletContext().getAttribute("NUMBER_OF_CLUSTER")+" " + k + " "+ (String) request.getServletContext().getAttribute("N") + " " +(String) request.getServletContext().getAttribute("NUMBERS_OF_CORES")+" " +(String) request.getServletContext().getAttribute("NO_MEMORY")+" " +(String) request.getServletContext().getAttribute("SPATIAL") }; try { Process p = Runtime.getRuntime().exec(arg); BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream()) ); while ((line = in.readLine()) != null) { System.out.println(line); if(display){ out.write(line); out.write("
"); } if(line.contains("WebCBIR")){ display=true; } } if(!display){ out.write("Porownanie nie zwrocilo wynikow"); } in.close(); } catch (Exception e) { out.write("Blad polaczenia z serwerem - nie udalo sie uruchomic porownania"); } file.delete(); //System.out.println("uploaded successfully"); //out.write("Download "+fileItem.getName()+""); } } catch (FileUploadException e) { out.write("Exception in uploading file."); } catch (Exception e) { out.write("Exception in uploading file."); } out.write(""); } }