/** * Delete an uploaded file. * * @param request * @param response * @return FileItem * @throws IOException */ protected static FileItem removeUploadedFile(HttpServletRequest request, HttpServletResponse response) throws IOException { String parameter = request.getParameter(UConsts.PARAM_REMOVE); FileItem item = findFileItem(getSessionFileItems(request), parameter); if (item != null) { getSessionFileItems(request).remove(item); logger.debug("UPLOAD-SERVLET (" + request.getSession().getId() + ") removeUploadedFile: " + parameter + " " + item.getName() + " " + item.getSize()); } else { logger.info("UPLOAD-SERVLET (" + request.getSession().getId() + ") removeUploadedFile: " + parameter + " not in session."); } renderXmlResponse(request, response, XML_DELETED_TRUE); return item; }
@Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (checkCORS(request, response) && request.getMethod().equals("OPTIONS")) { String method = request.getHeader("Access-Control-Request-Method"); if (method != null) { response.addHeader("Access-Control-Allow-Methods", method); response.setHeader("Allow", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS"); } String headers = request.getHeader("Access-Control-Request-Headers"); if (headers != null) { response.addHeader("Access-Control-Allow-Headers", headers); } response.setContentType("text/plain"); } super.service(request, response); }
protected Map<String, String> getFileItemsSummary(HttpServletRequest request, Map<String, String> stat) { if (stat == null) { stat = new HashMap<String, String>(); } List<FileItem> s = getMyLastReceivedFileItems(request); if (s != null) { String files = ""; String params = ""; for (FileItem i : s) { if (i.isFormField()) { params += formFieldToXml(i); } else { files += fileFieldToXml(i); } } stat.put(TAG_FILES, files); stat.put(TAG_PARAMS, params); stat.put(TAG_FINISHED, "ok"); } return stat; }
/** * Utility method to get a fileItem of type file from a vector using either * the file name or the attribute name. * * @param sessionFiles * @param parameter * @return fileItem of the file found or null */ public static FileItem findFileItem(List<FileItem> sessionFiles, String parameter) { if (sessionFiles == null || parameter == null) { return null; } FileItem item = findItemByFieldName(sessionFiles, parameter); if (item == null) { item = findItemByFileName(sessionFiles, parameter); } if (item != null && !item.isFormField()) { return item; } return null; }
AbstractUploadListener listener = getCurrentListener(request); if (listener != null) { if (listener.isFrozen() || listener.isCanceled() || listener.getPercent() >= 100) { removeCurrentListener(request); } else { String error = getMessage("busy"); logger.error("UPLOAD-SERVLET (" + session.getId() + ") " + error); return error; listener = createNewListener(request); checkRequest(request); FileItemFactory factory = getFileItemFactory(getContentLength(request)); ServletFileUpload uploader = new ServletFileUpload(factory); uploader.setSizeMax(maxSize); session.removeAttribute(getSessionLastFilesKey(request)); logger.error("UPLOAD-SERVLET (" + session.getId() + ") parsed request, " + uploadedItems.size() + " items received."); List<FileItem> sessionFiles = getMySessionFileItems(request); if (sessionFiles == null) { sessionFiles = new ArrayList<FileItem>(); session.setAttribute(getSessionFilesKey(request), sessionFiles); session.setAttribute(getSessionLastFilesKey(request), uploadedItems); } else if (!isAppEngine()){ logger.error("UPLOAD-SERVLET (" + session.getId() + ") error NO DATA received "); error += getMessage("no_data");
perThreadRequest.set(request); try { AbstractUploadListener listener = getCurrentListener(request); if (request.getParameter(UConsts.PARAM_SESSION) != null) { logger.debug("UPLOAD-SERVLET (" + request.getSession().getId() + ") new session, blobstore=" + (isAppEngine() && useBlobstore)); String sessionId = request.getSession().getId(); renderXmlResponse(request, response, "<" + TAG_BLOBSTORE + ">" + (isAppEngine() && useBlobstore) + "</" + TAG_BLOBSTORE + ">" + "<" + TAG_SESSION_ID + ">" + sessionId + "</" + TAG_SESSION_ID + ">"); } else if (isAppEngine() && (request.getParameter(UConsts.PARAM_BLOBSTORE) != null || request.getParameterMap().size() == 0)) { String blobStorePath = getBlobstorePath(request); logger.debug("UPLOAD-SERVLET (" + request.getSession().getId() + ") getBlobstorePath=" + blobStorePath); renderXmlResponse(request, response, "<" + TAG_BLOBSTORE_PATH + ">" + blobStorePath + "</" + TAG_BLOBSTORE_PATH + ">"); } else if (request.getParameter(UConsts.PARAM_SHOW) != null) { getUploadedFile(request, response); } else if (request.getParameter(UConsts.PARAM_CANCEL) != null) { cancelUpload(request); renderXmlResponse(request, response, XML_CANCELED_TRUE); } else if (request.getParameter(UConsts.PARAM_REMOVE) != null) { removeUploadedFile(request, response); } else if (request.getParameter(UConsts.PARAM_CLEAN) != null) { logger.debug("UPLOAD-SERVLET (" + request.getSession().getId() + ") cleanListener"); renderXmlResponse(request, response, XML_FINISHED_OK); } else if (listener != null && listener.isFinished()) { removeCurrentListener(request); renderXmlResponse(request, response, listener.getPostResponse()); } else { String message = statusToString(getUploadStatus(request, request.getParameter(UConsts.PARAM_FILENAME), null));
/** * Get an uploaded file item. * * @param request * @param response * @throws IOException */ public void getUploadedFile(HttpServletRequest request, HttpServletResponse response) throws IOException { String parameter = request.getParameter(UConsts.PARAM_SHOW); FileItem item = findFileItem(getMySessionFileItems(request), parameter); if (item != null) { logger.error("UPLOAD-SERVLET (" + request.getSession().getId() + ") getUploadedFile: " + parameter + " returning: " + item.getContentType() + ", " + item.getName() + ", " + item.getSize() + " bytes"); response.setContentType(item.getContentType()); copyFromInputStreamToOutputStream(item.getInputStream(), response.getOutputStream()); } else { logger.error("UPLOAD-SERVLET (" + request.getSession().getId() + ") getUploadedFile: " + parameter + " file isn't in session."); renderXmlResponse(request, response, XML_ERROR_ITEM_NOT_FOUND); } }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String parameter = request.getParameter(UConsts.PARAM_REMOVE); if (parameter != null) { try { // Notify classes extending this that they have to remove the item. removeItem(request, parameter); // Other way to notify classes extending this. FileItem item = super.findFileItem(getMySessionFileItems(request), parameter); if (item != null) { removeItem(request, item); } } catch (Exception e) { renderXmlResponse(request, response, "<" + TAG_ERROR + ">" + e.getMessage() + "</" + TAG_ERROR + ">"); return; } // Remove the item saved in session in the case it was not removed yet super.removeUploadedFile(request, response); } else { super.doGet(request, response); } }
/** * Right now, using the same approach present in upload attachments to create the attachment */ private static FileItem createPreferencesFileItem(InputStream is, String filename, String contentType) throws IOException { FileItemFactory f = new DiskFileItemFactory(); FileItem item = f.createItem(filename, contentType, false, filename); UploadServlet.copyFromInputStreamToOutputStream(is, item.getOutputStream()); return item; }
FileItem fileItem = UploadServlet.findFileItem(sessionFiles, key);