protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // Retrieving the file upload defaults from pentaho.xml String relativePath = PentahoSystem.getSystemSetting( "file-upload-defaults/relative-path", String.valueOf(DEFAULT_RELATIVE_UPLOAD_FILE_PATH)); // $NON-NLS-1$ String maxFileLimit = PentahoSystem.getSystemSetting( "file-upload-defaults/max-file-limit", String.valueOf(MAX_FILE_SIZE)); // $NON-NLS-1$ String maxFolderLimit = PentahoSystem.getSystemSetting( "file-upload-defaults/max-folder-limit", String.valueOf(MAX_FOLDER_SIZE)); // $NON-NLS-1$ response.setContentType("text/plain"); FileItem uploadItem = getFileItem(request); if (uploadItem == null) { response .getWriter() .write( Messages.getInstance() .getErrorString("UploadFileServlet.ERROR_0001_NO_FILE_TO_UPLOAD")); return; } if (Long.parseLong(maxFileLimit) < uploadItem.getSize()) { response .getWriter() .write( Messages.getInstance().getErrorString("UploadFileServlet.ERROR_0003_FILE_TOO_BIG")); return; } String path = PentahoSystem.getApplicationContext().getSolutionPath(relativePath); File pathDir = new File(path); // create the path if it doesn't exist yet if (!pathDir.exists()) { pathDir.mkdirs(); } if (uploadItem.getSize() + getFolderSize(pathDir) > Long.parseLong(maxFolderLimit)) { response .getWriter() .write( Messages.getInstance() .getErrorString("UploadFileServlet.ERROR_0004_FOLDER_SIZE_LIMIT_REACHED")); return; } byte[] fileContents = uploadItem.get(); UUID id = UUIDUtil.getUUID(); String filename = id.toString() + CSV_EXT; if (doesFileExists(new File(path + filename))) { response .getWriter() .write( Messages.getInstance() .getErrorString("UploadFileServlet.ERROR_0002_FILE_ALREADY_EXIST")); return; } FileOutputStream outputStream = new FileOutputStream(path + filename); outputStream.write(fileContents); outputStream.flush(); outputStream.close(); response.getWriter().write(new String(filename)); } catch (Exception e) { response .getWriter() .write( Messages.getInstance() .getErrorString( "UploadFileServlet.ERROR_0005_UNKNOWN_ERROR", e.getLocalizedMessage())); } }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String relativePath = PentahoSystem.getSystemSetting( "file-upload-defaults/relative-path", String.valueOf(DEFAULT_RELATIVE_UPLOAD_FILE_PATH)); // $NON-NLS-1$ String maxFileLimit = PentahoSystem.getSystemSetting( "file-upload-defaults/max-file-limit", String.valueOf(MAX_FILE_SIZE)); // $NON-NLS-1$ String maxFolderLimit = PentahoSystem.getSystemSetting( "file-upload-defaults/max-folder-limit", String.valueOf(MAX_FOLDER_SIZE)); // $NON-NLS-1$ IPentahoSession session = PentahoHttpSessionHelper.getPentahoSession(request); response.setContentType("text/plain"); // $NON-NLS-1$ FileItem uploadItem = getFileItem(request); if (uploadItem == null) { String error = Messages.getErrorString( "UploadFileDebugServlet.ERROR_0001_NO_FILE_TO_UPLOAD"); //$NON-NLS-1$ response.getWriter().write(error); return; } if (Long.parseLong(maxFileLimit) < uploadItem.getSize()) { String error = Messages.getErrorString( "UploadFileDebugServlet.ERROR_0003_FILE_TOO_BIG"); //$NON-NLS-1$ response.getWriter().write(error); return; } String path = PentahoSystem.getApplicationContext().getSolutionPath(relativePath); File pathDir = new File(path); // create the path if it doesn't exist yet if (!pathDir.exists()) { pathDir.mkdirs(); } if (uploadItem.getSize() + getFolderSize(new File(path)) > Long.parseLong(maxFolderLimit)) { String error = Messages.getErrorString( "UploadFileDebugServlet.ERROR_0004_FOLDER_SIZE_LIMIT_REACHED"); //$NON-NLS-1$ response.getWriter().write(error); return; } String filename = request.getParameter("file_name"); // $NON-NLS-1$ if (StringUtils.isEmpty(filename)) { filename = UUIDUtil.getUUID().toString(); } String temporary = request.getParameter("mark_temporary"); // $NON-NLS-1$ boolean isTemporary = false; if (temporary != null) { isTemporary = Boolean.valueOf(temporary); } File file; if (isTemporary) { file = PentahoSystem.getApplicationContext() .createTempFile(session, "", ".tmp", true); // $NON-NLS-1$ } else { file = new File(path + File.separatorChar + filename); } FileOutputStream outputStream = new FileOutputStream(file); byte[] fileContents = uploadItem.get(); outputStream.write(fileContents); outputStream.flush(); outputStream.close(); response.getWriter().write(file.getName()); } catch (Exception e) { String error = Messages.getErrorString( "UploadFileDebugServlet.ERROR_0005_UNKNOWN_ERROR", e.getLocalizedMessage()); // $NON-NLS-1$ response.getWriter().write(error); } }