Example usage for org.apache.commons.fileupload FileItem write

List of usage examples for org.apache.commons.fileupload FileItem write

Introduction

In this page you can find the example usage for org.apache.commons.fileupload FileItem write.

Prototype

void write(File file) throws Exception;

Source Link

Document

A convenience method to write an uploaded item to disk.

Usage

From source file:com.corejsf.UploadRenderer.java

public void decode(FacesContext context, UIComponent component) {
    log.debug("**** decode =");
    ExternalContext external = context.getExternalContext();
    HttpServletRequest request = (HttpServletRequest) external.getRequest();
    String clientId = component.getClientId(context);
    FileItem item = (FileItem) request.getAttribute(clientId + UPLOAD);
    // check if file > maxSize allowed
    log.debug("clientId =" + clientId);
    log.debug("fileItem =" + item);
    // if (item!=null) log.debug("***UploadRender: fileItem size ="+ item.getSize());
    Long maxSize = (Long) ((ServletContext) external.getContext()).getAttribute("FILEUPLOAD_SIZE_MAX");
    // RU - typo. Stanford agrees, so this should be FINR
    if (item != null && item.getSize() / 1000 > maxSize.intValue()) {
        ((ServletContext) external.getContext()).setAttribute("TEMP_FILEUPLOAD_SIZE",
                Long.valueOf(item.getSize() / 1000));
        ((EditableValueHolder) component).setSubmittedValue("SizeTooBig:" + item.getName());
        return;//from   w ww  .j a v  a  2  s  .co  m
    }

    Object target;
    ValueBinding binding = component.getValueBinding("target");
    if (binding != null)
        target = binding.getValue(context);
    else
        target = component.getAttributes().get("target");

    String repositoryPath = (String) ((ServletContext) external.getContext())
            .getAttribute("FILEUPLOAD_REPOSITORY_PATH");
    log.debug("****" + repositoryPath);
    if (target != null) {
        File dir = new File(repositoryPath + target.toString()); //directory where file would be saved
        if (!dir.exists())
            dir.mkdirs();
        if (item != null && !("").equals(item.getName())) {
            String fullname = item.getName();
            fullname = fullname.replace('\\', '/'); // replace c:\fullname to c:/fullname
            fullname = fullname.substring(fullname.lastIndexOf("/") + 1);
            int dot_index = fullname.lastIndexOf(".");
            String filename = "";
            if (dot_index < 0) {
                filename = fullname + "_" + (new Date()).getTime();
            } else {
                filename = fullname.substring(0, dot_index) + "_" + (new Date()).getTime()
                        + fullname.substring(dot_index);
            }
            File file = new File(dir.getPath() + "/" + filename);
            log.debug("**1. filename=" + file.getPath());
            try {
                //if (mediaIsValid) item.write(file);
                item.write(file);
                // change value so we can evoke the listener
                ((EditableValueHolder) component).setSubmittedValue(file.getPath());
            } catch (Exception ex) {
                throw new FacesException(ex);
            }
        }
    }
}

From source file:com.silverpeas.jobStartPagePeas.control.JobStartPagePeasSessionController.java

private void processSpaceWallpaper(List<FileItem> items, String path) throws Exception {
    FileItem file = FileUploadUtil.getFile(items, "wallPaper");
    if (file != null && StringUtil.isDefined(file.getName())) {
        String extension = FileRepositoryManager.getFileExtension(file.getName());
        if (extension != null && extension.equalsIgnoreCase("jpeg")) {
            extension = "jpg";
        }/* ww w . j a v a  2 s .co m*/

        // Remove all wallpapers to ensure it is unique
        File dir = new File(path);
        Collection<File> wallpapers = FileUtils.listFiles(dir,
                FileFilterUtils.prefixFileFilter(SilverpeasLook.DEFAULT_WALLPAPER_PROPERTY, IOCase.INSENSITIVE),
                null);
        for (File wallpaper : wallpapers) {
            FileUtils.deleteQuietly(wallpaper);
        }

        file.write(new File(path + File.separator + "wallPaper." + extension.toLowerCase()));
    }
}

From source file:com.stratelia.silverpeas.versioningPeas.servlets.VersioningRequestRouter.java

@Override
public String getDestination(String function, VersioningSessionController versioningSC,
        HttpServletRequest request) {/*  w w  w. j a v a2 s .c o m*/
    String destination = "";
    SilverTrace.info("versioningPeas", "VersioningRequestRouter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
            "User=" + versioningSC.getUserId() + " Function=" + function);
    String rootDestination = "/versioningPeas/jsp/";
    ResourceLocator messages = new ResourceLocator(
            "com.stratelia.silverpeas.versioningPeas.multilang.versioning", versioningSC.getLanguage());
    try {
        String flag = versioningSC.getProfile();

        request.setAttribute("Profile", flag);
        if (function.startsWith("ViewReadersList")) {
            List<Group> groups = new ArrayList<Group>();
            List<String> users = new ArrayList<String>();
            ProfileInst profile = versioningSC.getCurrentProfile(VersioningSessionController.READER);
            if (profile != null) {
                groups = versioningSC.groupIds2Groups(profile.getAllGroups());
                users = versioningSC.userIds2Users(profile.getAllUsers());
            }
            request.setAttribute("Groups", groups);
            request.setAttribute("Users", users);
            destination = rootDestination + "ReadList.jsp";
        } else if (function.startsWith("ViewWritersList")) {
            Document document = versioningSC.getEditingDocument();

            ProfileInst profile = versioningSC.getCurrentProfile(VersioningSessionController.WRITER);
            ArrayList<Worker> workers = new ArrayList<Worker>();
            if (profile != null) {
                workers = document.getWorkList();
                if (document.getCurrentWorkListOrder() == Integer
                        .parseInt(VersioningSessionController.WRITERS_LIST_ORDERED)
                        && !versioningSC.isAlreadyMerged() && !profile.getAllGroups().isEmpty()) {
                    // Need to merge users from groups with other users
                    workers = versioningSC.mergeUsersFromGroupsWithWorkers(profile.getAllGroups(), workers);
                }
            }
            request.setAttribute("Workers", workers);
            destination = rootDestination + "WorkList.jsp";
        } else if (function.startsWith("ChangeOrder")) {
            String lines = request.getParameter("lines");
            Document document = versioningSC.getEditingDocument();
            ArrayList<Worker> users = document.getWorkList();
            if (lines != null) {
                int users_count = Integer.parseInt(lines);
                if (users_count == users.size()) {
                    ArrayList<Worker> new_users = new ArrayList<Worker>(users_count);

                    for (int i = 0; i < users_count; i++) {
                        Worker user = users.get(i);
                        boolean v_value = false;

                        // Validator
                        String chvi = request.getParameter("chv" + i);
                        if (chvi != null) {
                            v_value = true;
                        }
                        user.setApproval(v_value);
                        new_users.add(user);
                    }

                    // Sorting begin
                    int upIndex = Integer.parseInt(request.getParameter("up"));
                    int downIndex = Integer.parseInt(request.getParameter("down"));
                    int addIndex = Integer.parseInt(request.getParameter("add"));

                    // Remove user to change order
                    if (upIndex > 0 && upIndex < users_count) {
                        Worker user = new_users.remove(upIndex);
                        new_users.add(upIndex - 1, user);
                    }
                    if (downIndex >= 0 && downIndex < users_count - 1) {
                        Worker user = new_users.remove(downIndex);
                        new_users.add(downIndex + 1, user);
                    }

                    if (addIndex >= 0 && addIndex < users_count) {
                        Worker user = new_users.get(addIndex);
                        Worker new_user = new Worker(user.getUserId(),
                                Integer.parseInt(versioningSC.getEditingDocument().getPk().getId()), 0,
                                user.isApproval(), true, versioningSC.getComponentId(), user.getType(),
                                user.isSaved(), user.isUsed(), user.getListType());
                        new_users.add(addIndex + 1, new_user);
                        users_count++;
                    }

                    for (int i = 0; i < users_count; i++) {
                        new_users.get(i).setOrder(i);
                    }
                    document.setWorkList(new_users);
                }
            }
            destination = getDestination("ViewWritersList", versioningSC, request);
        } else if (function.startsWith("ChangeListType")) {
            Document document = versioningSC.getEditingDocument();
            String listType = request.getParameter("ListType");
            if (!StringUtil.isDefined(listType)) {
                listType = VersioningSessionController.WRITERS_LIST_SIMPLE;
            }
            document.setCurrentWorkListOrder(Integer.parseInt(listType));
            ProfileInst profile = versioningSC.getProfile(VersioningSessionController.WRITER);
            ArrayList<Worker> workers = new ArrayList<Worker>();
            if (profile != null) {
                if (listType.equals(VersioningSessionController.WRITERS_LIST_ORDERED)) {
                    // Need to merge users from groups with other users
                    workers = document.getWorkList();
                    workers = versioningSC.mergeUsersFromGroupsWithWorkers(profile.getAllGroups(), workers);
                    versioningSC.setAlreadyMerged(true);
                } else {
                    ArrayList<Worker> workersUsers = new ArrayList<Worker>();
                    ArrayList<Worker> workersGroups = new ArrayList<Worker>();

                    workersGroups = versioningSC.convertGroupsToWorkers(workers, profile.getAllGroups());
                    workers.addAll(workersGroups);

                    workersUsers = versioningSC.convertUsersToWorkers(workers, profile.getAllUsers());
                    workers.addAll(workersUsers);
                }
            }
            document.setWorkList(workers);
            versioningSC.updateWorkList(document);
            versioningSC.updateDocument(document);
            destination = getDestination("ViewWritersList", versioningSC, request);
        } else if (function.startsWith("SaveListType")) {
            Document document = versioningSC.getEditingDocument();
            ArrayList<Worker> users = document.getWorkList();
            ArrayList<Worker> updateUsers = new ArrayList<Worker>();
            for (int i = 0; i < users.size(); i++) {
                Worker user = users.get(i);
                // Set approval rights to users
                String chvi = request.getParameter("chv" + i);
                boolean v_value = false;
                if (chvi != null) {
                    v_value = true;
                }
                user.setApproval(v_value);
                updateUsers.add(user);
            }
            versioningSC.updateWorkList(document);
            versioningSC.updateDocument(document);
            destination = getDestination("ViewWritersList", versioningSC, request);
        } else if (function.startsWith("ViewVersions")) {
            request.setAttribute("Document", versioningSC.getEditingDocument());
            destination = rootDestination + "versions.jsp";
        } else if (function.equals("SelectUsersGroupsProfileInstance")) {
            String role = request.getParameter("Role");
            String listType = request.getParameter("ListType");
            if (StringUtil.isDefined(listType)) {
                versioningSC.getEditingDocument().setCurrentWorkListOrder(Integer.parseInt(listType));
            }
            versioningSC.initUserPanelInstanceForGroupsUsers(role);
            destination = Selection.getSelectionURL(Selection.TYPE_USERS_GROUPS);
        } else if (function.startsWith("DocumentProfileSetUsersAndGroups")) {
            String role = request.getParameter("Role");
            ProfileInst profile = versioningSC.getProfile(role);
            versioningSC.updateDocumentProfile(profile);
            if (role.equals(VersioningSessionController.WRITER)) {

                ArrayList<Worker> oldWorkers = versioningSC.getEditingDocument().getWorkList();
                ArrayList<Worker> workers = new ArrayList<Worker>();
                ArrayList<Worker> workersUsers = new ArrayList<Worker>();
                ArrayList<Worker> workersGroups = new ArrayList<Worker>();

                workersGroups = versioningSC.convertGroupsToWorkers(oldWorkers, profile.getAllGroups());
                workers.addAll(workersGroups);

                workersUsers = versioningSC.convertUsersToWorkers(oldWorkers, profile.getAllUsers());
                workers.addAll(workersUsers);
                ArrayList<Worker> sortedWorkers = new ArrayList<Worker>();
                if (workers != null) {
                    for (int i = 0; i < workers.size(); i++) {
                        Worker sortedWorker = workers.get(i);
                        sortedWorker.setOrder(i);
                        sortedWorkers.add(sortedWorker);
                    }
                    workers = sortedWorkers;
                }

                versioningSC.getEditingDocument().setWorkList(workers);
                versioningSC.updateWorkList(versioningSC.getEditingDocument());
                request.setAttribute("urlToReload", "ViewWritersList");
            } else {
                request.setAttribute("urlToReload", "ViewReadersList");
            }
            destination = rootDestination + "closeWindow.jsp";
        } else if (function.startsWith("SaveList")) {
            String role = request.getParameter("Role");
            String fromFunction = request.getParameter("From");
            if (versioningSC.isAccessListExist(role)) {
                versioningSC.removeAccessList(role);
            }
            versioningSC.saveAccessList(role);
            request.setAttribute("Message", messages.getString("versioning.ListSaved", ""));
            destination = getDestination(fromFunction, versioningSC, request);
        } else if (function.startsWith("DeleteReaderProfile")) {
            ProfileInst profile = versioningSC.getDocumentProfile(VersioningSessionController.READER);
            if (profile != null) {
                profile.removeAllGroups();
                profile.removeAllUsers();
                versioningSC.updateProfileInst(profile);
            }
            destination = getDestination("ViewReadersList", versioningSC, request);
        } else if (function.startsWith("DeleteWriterProfile")) {
            ProfileInst profile = versioningSC.getDocumentProfile(VersioningSessionController.WRITER);
            if (profile != null) {
                profile.removeAllGroups();
                profile.removeAllUsers();
                versioningSC.updateProfileInst(profile);
            }
            versioningSC.deleteWorkers(true);
            versioningSC.setAlreadyMerged(false);
            destination = getDestination("ViewWritersList", versioningSC, request);
        } else if (function.startsWith("Update")) {
            String docId = request.getParameter("DocId");
            String name = request.getParameter("name");
            String description = request.getParameter("description");
            String comments = request.getParameter("comments");
            Document document = versioningSC
                    .getDocument(new DocumentPK(Integer.parseInt(docId), versioningSC.getComponentId()));
            document.setDescription(description);
            document.setName(name);
            document.setAdditionalInfo(comments);
            versioningSC.updateDocument(document);
            versioningSC.setEditingDocument(document);
            destination = getDestination("ViewVersions", versioningSC, request);
        } else if (function.equals("CloseWindow")) {
            destination = rootDestination + "closeWindow.jsp";
        } else if (function.equals("AddNewVersion")) {

            // Display xmlForm if used
            if (StringUtil.isDefined(versioningSC.getXmlForm())) {
                setXMLFormIntoRequest(request.getParameter("documentId"), versioningSC, request);
            }

            destination = rootDestination + "newVersion.jsp";
        } else if (function.equals("AddNewOnlineVersion")) {
            String documentId = request.getParameter("documentId");

            request.setAttribute("DocumentId", documentId);
            // Display xmlForm if used
            if (StringUtil.isDefined(versioningSC.getXmlForm())) {
                setXMLFormIntoRequest(documentId, versioningSC, request);
            }

            destination = rootDestination + "newOnlineVersion.jsp";
        } else if (function.equals("ChangeValidator")) {
            String setTypeId = request.getParameter("VV");
            String setType = request.getParameter("SetType"); // 'U'for users or 'G'
            // for groups
            versioningSC.setWorkerValidator(versioningSC.getEditingDocument().getWorkList(),
                    Integer.parseInt(setTypeId), setType);
            destination = getDestination("ViewWritersList", versioningSC, request);
        } else if (function.equals("ListPublicVersionsOfDocument")) {
            String documentId = request.getParameter("DocId");
            String isAlias = request.getParameter("Alias");
            DocumentPK documentPK = new DocumentPK(Integer.parseInt(documentId), versioningSC.getSpaceId(),
                    versioningSC.getComponentId());

            Document document = versioningSC.getDocument(documentPK);
            List<DocumentVersion> publicVersions = versioningSC.getPublicDocumentVersions(documentPK);

            request.setAttribute("Document", document);
            request.setAttribute("PublicVersions", publicVersions);
            request.setAttribute("Alias", isAlias);
            destination = "/versioningPeas/jsp/publicVersions.jsp";
        } else if ("ViewAllVersions".equals(function)) {
            return viewVersions(request, versioningSC);
        } else if ("saveOnline".equals(function)) {
            if (!StringUtil.isDefined(request.getCharacterEncoding())) {
                request.setCharacterEncoding("UTF-8");
            }
            String encoding = request.getCharacterEncoding();
            List<FileItem> items = FileUploadUtil.parseRequest(request);

            String documentId = FileUploadUtil.getParameter(items, "documentId", "-1", encoding);
            DocumentPK documentPK = new DocumentPK(Integer.parseInt(documentId), versioningSC.getSpaceId(),
                    versioningSC.getComponentId());
            Document document = versioningSC.getDocument(documentPK);
            String userId = versioningSC.getUserId();
            String radio = FileUploadUtil.getParameter(items, "radio", "", encoding);
            String comments = FileUploadUtil.getParameter(items, "comments", "", encoding);
            boolean force = "true".equalsIgnoreCase(request.getParameter("force_release"));

            String callback = FileUploadUtil.getParameter(items, "Callback");
            request.setAttribute("Callback", callback);
            destination = "/versioningPeas/jsp/documentSaved.jsp";

            boolean addXmlForm = !isXMLFormEmpty(versioningSC, items);

            DocumentVersionPK newVersionPK = versioningSC.saveOnline(document, comments, radio,
                    Integer.parseInt(userId), force, addXmlForm);
            if (newVersionPK != null) {
                request.setAttribute("DocumentId", documentId);
                DocumentVersion version = versioningSC.getLastVersion(documentPK);
                request.setAttribute("Version", version);
                if (addXmlForm) {
                    saveXMLData(versioningSC, newVersionPK, items);
                }
            } else {
                if ("admin".equals(versioningSC.getUserRoleLevel())) {
                    // TODO MANU ecrire la page pour ressoumettre en forcant
                    destination = "/versioningPeas/jsp/forceDocumentLocked.jsp";
                } else {
                    destination = "/versioningPeas/jsp/documentLocked.jsp";
                }
            }
        } else if ("Checkout".equals(function)) {
            String documentId = request.getParameter("DocId");
            DocumentPK documentPK = new DocumentPK(Integer.parseInt(documentId), versioningSC.getSpaceId(),
                    versioningSC.getComponentId());
            Document document = versioningSC.getDocument(documentPK);
            document.setStatus(1);
            document.setLastCheckOutDate(new Date());
            versioningSC.checkDocumentOut(documentPK, Integer.parseInt(versioningSC.getUserId()), new Date());
            document = versioningSC.getDocument(documentPK);
            versioningSC.setEditingDocument(document);
            request.setAttribute("Document", document);
            destination = rootDestination + "versions.jsp";
        } else if ("DeleteDocumentRequest".equals(function)) {
            String documentId = request.getParameter("DocId");
            String url = request.getParameter("Url");
            request.setAttribute("DocId", documentId);
            request.setAttribute("Url", url);
            destination = rootDestination + "deleteDocument.jsp";
        } else if (function.equals("DeleteDocument")) {
            String documentId = request.getParameter("DocId");
            String url = request.getParameter("Url");
            DocumentPK documentPK = new DocumentPK(Integer.parseInt(documentId), versioningSC.getSpaceId(),
                    versioningSC.getComponentId());
            versioningSC.deleteDocument(documentPK);
            SilverTrace.info("versioningPeas", "VersioningRequestRouter.getDestination()",
                    "root.MSG_GEN_PARAM_VALUE", "url=" + url);
            request.setAttribute("urlToReload", url);
            destination = rootDestination + "closeWindow.jsp";
        } else if (function.equals("AddNewDocument")) {
            String pubId = request.getParameter("PubId");
            request.setAttribute("PubId", pubId);

            if (StringUtil.isDefined(versioningSC.getXmlForm())) {
                setXMLFormIntoRequest(null, versioningSC, request);
            }

            destination = rootDestination + "newDocument.jsp";
        } else if (function.equals("SaveNewDocument")) {
            saveNewDocument(request, versioningSC);
            destination = getDestination("ViewVersions", versioningSC, request);
        } else if (function.equals("SaveNewVersion")) {
            if (!StringUtil.isDefined(request.getCharacterEncoding())) {
                request.setCharacterEncoding("UTF-8");
            }
            String encoding = request.getCharacterEncoding();
            List<FileItem> items = FileUploadUtil.parseRequest(request);

            String type = FileUploadUtil.getParameter(items, "type", "", encoding);
            String comments = FileUploadUtil.getParameter(items, "comments", "", encoding);
            String radio = FileUploadUtil.getParameter(items, "radio", "", encoding);
            String documentId = FileUploadUtil.getParameter(items, "documentId", "-1", encoding);

            // Save file on disk
            FileItem fileItem = FileUploadUtil.getFile(items, "file_upload");
            boolean runOnUnix = !FileUtil.isWindows();
            String logicalName = fileItem.getName();
            String physicalName = "dummy";
            String mimeType = "dummy";
            File dir = null;
            int size = 0;
            if (logicalName != null) {

                if (runOnUnix) {
                    logicalName = logicalName.replace('\\', File.separatorChar);
                }

                logicalName = logicalName.substring(logicalName.lastIndexOf(File.separator) + 1,
                        logicalName.length());
                type = logicalName.substring(logicalName.lastIndexOf(".") + 1, logicalName.length());
                physicalName = new Long(new Date().getTime()).toString() + "." + type;
                mimeType = FileUtil.getMimeType(logicalName);
                if (!StringUtil.isDefined(mimeType)) {
                    mimeType = "unknown";
                }
                dir = new File(versioningSC.createPath(versioningSC.getComponentId(), null) + physicalName);
                size = new Long(fileItem.getSize()).intValue();
                fileItem.write(dir);
            }

            // create DocumentVersion
            String componentId = versioningSC.getComponentId();
            DocumentPK docPK = new DocumentPK(Integer.parseInt(documentId), "useless", componentId);
            int userId = Integer.parseInt(versioningSC.getUserId());

            DocumentVersion documentVersion = null;
            DocumentVersion lastVersion = versioningSC.getLastVersion(docPK);
            if (com.stratelia.silverpeas.versioning.ejb.RepositoryHelper.getJcrDocumentService()
                    .isNodeLocked(lastVersion)) {
                destination = rootDestination + "documentLocked.jsp";
            } else {

                List<DocumentVersion> versions = versioningSC.getDocumentVersions(docPK);
                int majorNumber = 0;
                int minorNumber = 1;
                if (versions != null && versions.size() > 0) {
                    documentVersion = versions.get(0);
                    majorNumber = documentVersion.getMajorNumber();
                    minorNumber = documentVersion.getMinorNumber();
                    DocumentVersion newVersion = new DocumentVersion(null, docPK, majorNumber, minorNumber,
                            userId, new Date(), comments, Integer.parseInt(radio), documentVersion.getStatus(),
                            physicalName, logicalName, mimeType, size, componentId);

                    boolean addXmlForm = !isXMLFormEmpty(versioningSC, items);
                    if (addXmlForm) {
                        newVersion.setXmlForm(versioningSC.getXmlForm());
                    }

                    newVersion = versioningSC.addNewDocumentVersion(newVersion);
                    ResourceLocator settings = new ResourceLocator(
                            "com.stratelia.webactiv.util.attachment.Attachment", "");
                    boolean actifyPublisherEnable = settings.getBoolean("ActifyPublisherEnable", false);
                    // Specific case: 3d file to convert by Actify Publisher
                    if (actifyPublisherEnable) {
                        String extensions = settings.getString("Actify3dFiles");
                        StringTokenizer tokenizer = new StringTokenizer(extensions, ",");
                        // 3d native file ?
                        boolean fileForActify = false;
                        SilverTrace.info("versioningPeas", "saveFile.jsp", "root.MSG_GEN_PARAM_VALUE",
                                "nb tokenizer =" + tokenizer.countTokens());
                        while (tokenizer.hasMoreTokens() && !fileForActify) {
                            String extension = tokenizer.nextToken();
                            if (type.equalsIgnoreCase(extension)) {
                                fileForActify = true;
                            }
                        }
                        if (fileForActify) {
                            String dirDestName = "v_" + componentId + "_" + documentId;
                            String actifyWorkingPath = settings.getString("ActifyPathSource") + File.separator
                                    + dirDestName;

                            String destPath = FileRepositoryManager.getTemporaryPath() + actifyWorkingPath;
                            if (!new File(destPath).exists()) {
                                FileRepositoryManager.createGlobalTempPath(actifyWorkingPath);
                            }

                            String destFile = FileRepositoryManager.getTemporaryPath() + actifyWorkingPath
                                    + File.separator + logicalName;
                            FileRepositoryManager.copyFile(
                                    versioningSC.createPath(componentId, null) + File.separator + physicalName,
                                    destFile);
                        }
                    }
                    if (addXmlForm) {
                        saveXMLData(versioningSC, newVersion.getPk(), items);
                    }
                }

                String returnURL = FileUploadUtil.getParameter(items, "ReturnURL");
                if (!StringUtil.isDefined(returnURL)) {
                    destination = getDestination("ViewVersions", versioningSC, request);
                } else {
                    request.setAttribute("urlToReload", returnURL);
                    destination = rootDestination + "closeWindow.jsp";
                }
            }
        } else {
            destination = rootDestination + function;
        }
    } catch (Exception e) {
        SilverTrace.error("versioning", "VersioningRequestRouter.getDestination",
                "root.EX_CANT_GET_REQUEST_DESTINATION", e);
        request.setAttribute("javax.servlet.jsp.jspException", e);
        destination = "/admin/jsp/errorpageMain.jsp";
    }
    SilverTrace.info("versioningPeas", "VersioningRequestRouter.getDestination()", "root.MSG_GEN_PARAM_VALUE",
            "Destination=" + destination);
    return destination;
}

From source file:admin.controller.ServletChangeLooks.java

/**
  * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
  * methods.// ww w.  j  ava2s.  c om
  *
  * @param request servlet request
  * @param response servlet response
  * @throws ServletException if a servlet-specific error occurs
  * @throws IOException if an I/O error occurs
  */
public void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    super.processRequest(request, response);
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    String filePath = "";
    String fileName, fieldName, uploadPath, deletePath, file_name_to_delete = "", uploadPath1;
    Looks look;
    RequestDispatcher request_dispatcher;
    String lookname = "", lookid = "";
    Integer organization = 0;
    look = new Looks();
    boolean check = false;

    File file;
    int maxFileSize = 5000 * 1024;
    int maxMemSize = 5000 * 1024;
    try {
        // Verify the content type
        String contentType = request.getContentType();
        if ((contentType.indexOf("multipart/form-data") >= 0)) {

            DiskFileItemFactory factory = new DiskFileItemFactory();
            // maximum size that will be stored in memory
            factory.setSizeThreshold(maxMemSize);
            // Location to save data that is larger than maxMemSize.
            factory.setRepository(new File(AppConstants.TMP_FOLDER));

            // Create a new file upload handler
            ServletFileUpload upload = new ServletFileUpload(factory);
            // maximum file size to be uploaded.
            upload.setSizeMax(maxFileSize);

            // Parse the request to get file items.
            List fileItems = upload.parseRequest(request);

            // Process the uploaded file items
            Iterator i = fileItems.iterator();

            out.println("<html>");
            out.println("<head>");
            out.println("<title>JSP File upload</title>");
            out.println("</head>");
            out.println("<body>");
            while (i.hasNext()) {
                FileItem fi = (FileItem) i.next();
                if (fi.isFormField()) {
                    // Get the uploaded file parameters
                    fieldName = fi.getFieldName();
                    if (fieldName.equals("lookname")) {
                        lookname = fi.getString();
                    }
                    if (fieldName.equals("lookid")) {
                        lookid = fi.getString();
                    }
                    if (fieldName.equals("organization")) {
                        organization = Integer.parseInt(fi.getString());
                    }
                    file_name_to_delete = look.getFileName(Integer.parseInt(lookid));
                } else {

                    check = look.checkAvailabilities(Integer.parseInt(lookid), lookname, organization);

                    if (check == false) {

                        fieldName = fi.getFieldName();
                        fileName = fi.getName();

                        File uploadDir = new File(AppConstants.LOOK_IMAGES_HOME);

                        if (!uploadDir.exists()) {
                            uploadDir.mkdirs();
                        }

                        //                            int inStr = fileName.indexOf(".");
                        //                            String Str = fileName.substring(0, inStr);
                        //
                        //                            fileName = lookname + "_" + Str + ".png";
                        fileName = lookname + "_" + fileName;
                        boolean isInMemory = fi.isInMemory();
                        long sizeInBytes = fi.getSize();

                        String file_path = AppConstants.LOOK_IMAGES_HOME + File.separator + fileName;
                        String delete_path = AppConstants.LOOK_IMAGES_HOME + File.separator
                                + file_name_to_delete;
                        File deleteFile = new File(delete_path);
                        deleteFile.delete();
                        File storeFile = new File(file_path);
                        fi.write(storeFile);
                        out.println("Uploaded Filename: " + filePath + "<br>");
                        look.changeLooks(Integer.parseInt(lookid), lookname, fileName, organization);
                        response.sendRedirect(request.getContextPath() + "/admin/looks.jsp");
                    } else {
                        response.sendRedirect(
                                request.getContextPath() + "/admin/editlook.jsp?exist=exist&look_id=" + lookid
                                        + "&look_name=" + lookname + "&organization_id=" + organization
                                        + "&image_file_name=" + file_name_to_delete);
                    }
                }
            }
            out.println("</body>");
            out.println("</html>");
        } else {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet upload</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<p>No file uploaded</p>");
            out.println("</body>");
            out.println("</html>");
        }
    } catch (Exception ex) {
        logger.log(Level.SEVERE, "Exception while editing the looks", ex);
    } finally {
        out.close();
    }

}

From source file:com.recipes.controller.Recipes.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods./*w w  w .java 2s . c  o m*/
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    DAO dao = new DAO();
    HttpSession session = request.getSession(true);
    if (request.getParameter("add") != null) {
        response.sendRedirect("addRecipe.jsp");
    } else if (request.getParameter("insert") != null) {
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        try {
            List<FileItem> fields = upload.parseRequest(request);

            Iterator<FileItem> it = fields.iterator();
            if (!it.hasNext()) {
                // fayl yoxdur mesaj
                return;
            }

            String title = "";//String deyiwenleri gotururuy
            String article = "";
            String category = "";
            String prepareRules = "";
            String image = "";
            List<String> composition = new ArrayList<>();
            String cook_time = "";
            String total_time = "";
            String prep_time = "";

            while (it.hasNext()) { // eger file varsa
                FileItem fileItem = it.next(); // iteratorun next metodu cagrilir
                boolean isFormField = fileItem.isFormField(); // isformField-input yoxlanilirki 
                if (isFormField) { // eger isFormFIelddise
                    switch (fileItem.getFieldName()) {
                    case "title":
                        title = fileItem.getString("UTF-8").trim();
                        break;
                    case "category":
                        category = fileItem.getString("UTF-8").trim();
                        break;
                    case "article":
                        article = fileItem.getString("UTF-8").trim();
                        break;
                    case "prepareRules":
                        prepareRules = fileItem.getString("UTF-8").trim();
                        break;
                    case "image":
                        image = fileItem.getString("UTF-8").trim();
                        break;
                    case "tags":
                        composition.add(fileItem.getString("UTF-8").trim());
                        break;
                    case "prep_time":
                        prep_time = fileItem.getString("UTF-8").trim();
                        break;
                    case "cook_time":
                        cook_time = fileItem.getString("UTF-8").trim();
                        break;
                    case "total_time":
                        total_time = fileItem.getString("UTF-8").trim();
                        break;
                    }
                } else {
                    if (fileItem.getFieldName().equals("image")) {
                        if (!fileItem.getString("UTF-8").trim().equals("")) {
                            image = fileItem.getName();
                            image = dao.generateCode() + image;
                            String relativeWebPath = "photos";
                            String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
                            File file = new File(absoluteDiskPath + "/", image);
                            fileItem.write(file);
                        }
                    }
                }
            }

            Recipe recipe = new Recipe();
            recipe.setArticle(article);
            recipe.setCategory(category);
            String comps = "";
            for (String c : composition)
                comps += c + ",";
            if (comps.contains(","))
                comps = comps.substring(0, comps.length() - 1);
            recipe.setComposition(comps);
            if (image.isEmpty()) {
                image = "defaultrecipe.jpg";
            }
            recipe.setImage(image);
            recipe.setLike_count(0);
            recipe.setPrepared_rules(prepareRules);
            recipe.setTitle(title);
            recipe.setUser_id(Integer.parseInt(session.getAttribute("user_id").toString()));
            recipe.setVisible(1);
            recipe.setPrep_time(prep_time);
            recipe.setCook_time(cook_time);
            recipe.setTotal_time(total_time);
            dao.insertRecipe(recipe);
            response.sendRedirect("addRecipe.jsp?success=");
        } catch (Exception e) {
            e.printStackTrace(System.out);
        }

    } else if (request.getParameter("id") != null) {
        response.sendRedirect("recipeDetails.jsp?id=" + request.getParameter("id"));
    }

    else {
        response.sendRedirect("index.jsp");
    }

}

From source file:it.univaq.servlet.Modifica_pub.java

protected boolean action_upload(HttpServletRequest request) throws FileUploadException, Exception {
    HttpSession s = SecurityLayer.checkSession(request);
    //dichiaro mappe 
    Map pubb = new HashMap();
    Map rist = new HashMap();
    Map key = new HashMap();
    Map files = new HashMap();
    Map modifica = new HashMap();

    int id = Integer.parseInt(request.getParameter("id"));

    if (ServletFileUpload.isMultipartContent(request)) {

        //La dimensione massima di ogni singolo file su system
        int dimensioneMassimaDelFileScrivibieSulFileSystemInByte = 10 * 1024 * 1024; // 10 MB
        //Dimensione massima della request
        int dimensioneMassimaDellaRequestInByte = 20 * 1024 * 1024; // 20 MB

        // Creo un factory per l'accesso al filesystem
        DiskFileItemFactory factory = new DiskFileItemFactory();

        //Setto la dimensione massima di ogni file, opzionale
        factory.setSizeThreshold(dimensioneMassimaDelFileScrivibieSulFileSystemInByte);

        // Istanzio la classe per l'upload
        ServletFileUpload upload = new ServletFileUpload(factory);

        // Setto la dimensione massima della request
        upload.setSizeMax(dimensioneMassimaDellaRequestInByte);

        // Parso la riquest della servlet, mi viene ritornata una lista di FileItem con
        // tutti i field sia di tipo file che gli altri
        List<FileItem> items = upload.parseRequest(request);

        /*// w  w w .  j  a  va 2  s .  c  om
        * La classe usata non permette di riprendere i singoli campi per
        * nome quindi dovremmo scorrere la lista che ci viene ritornata con
        * il metodo parserequest
        */
        //scorro per tutti i campi inviati
        for (int i = 0; i < items.size(); i++) {
            FileItem item = items.get(i);
            // Controllo se si tratta di un campo di input normale
            if (item.isFormField()) {
                // Prendo solo il nome e il valore
                String name = item.getFieldName();
                String value = item.getString();

                if (name.equals("titolo") || name.equals("autore") || name.equals("descrizione")) {
                    pubb.put(name, value);
                } else if (name.equals("isbn") || name.equals("editore") || name.equals("lingua")
                        || name.equals("numpagine") || name.equals("datapubbl")) {
                    rist.put(name, value);
                } else if (name.equals("key1") || name.equals("key2") || name.equals("key3")
                        || name.equals("key4")) {
                    key.put(name, value);
                } else if (name.equals("descrizionemod")) {
                    modifica.put(name, value);
                }

            } // Se si stratta invece di un file
            else {
                // Dopo aver ripreso tutti i dati disponibili name,type,size
                //String fieldName = item.getFieldName();
                String fileName = item.getName();
                String contentType = item.getContentType();
                long sizeInBytes = item.getSize();
                //li salvo nella mappa
                files.put("name", fileName);
                files.put("type", contentType);
                files.put("size", sizeInBytes);
                //li scrivo nel db
                //Database.connect();
                Database.insertRecord("files", files);
                //Database.close();

                // Posso scriverlo direttamente su filesystem
                if (true) {
                    File uploadedFile = new File(
                            getServletContext().getInitParameter("uploads.directory") + fileName);
                    // Solo se veramente ho inviato qualcosa
                    if (item.getSize() > 0) {
                        item.write(uploadedFile);
                    }
                }
            }

        }

        pubb.put("idutente", s.getAttribute("userid"));
        modifica.put("userid", s.getAttribute("userid"));
        modifica.put("idpubb", id);

        try {
            //    if(Database.updateRecord("keyword", key, "id="+id)){

            //aggiorno ora la pubblicazione con tutti i dati
            Database.updateRecord("keyword", key, "id=" + id);
            Database.updateRecord("pubblicazione", pubb, "id=" + id);
            Database.updateRecord("ristampa", rist, "idpub=" + id);
            Database.insertRecord("storia", modifica);

            //    //vado alla pagina di corretto inserimento

            return true;
        } catch (SQLException ex) {
            Logger.getLogger(Modifica_pub.class.getName()).log(Level.SEVERE, null, ex);
        }

    } else
        return false;
    return false;
}

From source file:com.pureinfo.tgirls.servlet.TestServlet.java

private File uploadFile(HttpServletRequest request) throws Exception {
    // ,??ServletFileUpload
    DiskFileItemFactory dfif = new DiskFileItemFactory();
    dfif.setSizeThreshold(4096);// ?,4K.
    String tempfilepath = FileFactory.getInstance().lookupPathConfigByFlag("UP", true).getLocalPath();
    dfif.setRepository(new File(tempfilepath));// 

    // //from  w ww . ja  v a  2s.co m
    ServletFileUpload sfu = new ServletFileUpload(dfif);
    sfu.setHeaderEncoding("utf-8");
    // 
    //sfu.setSizeMax(MAX_SIZE_5M);

    // PrintWriter out = response.getWriter();
    // request  
    List fileList = null;
    try {
        fileList = sfu.parseRequest(request);
    } catch (FileUploadException e) {// ?
        logger.error("FileUploadException", e);
        if (e instanceof SizeLimitExceededException) {
            throw new Exception("?:" + MAX_SIZE_5M / 1024 + "K");
        }
    }
    // 
    if (fileList == null || fileList.size() == 0) {
        throw new Exception("");
    }
    // 
    Iterator fileItr = fileList.iterator();
    // ?
    while (fileItr.hasNext()) {
        FileItem fileItem = null;
        String path = null;
        long size = 0;
        // ?
        fileItem = (FileItem) fileItr.next();
        // ?form?(<input type="text" />)

        if (fileItem == null || fileItem.isFormField()) {
            continue;
        }
        // 
        path = fileItem.getName();

        logger.debug("path:" + path);

        // ?
        size = fileItem.getSize();
        if ("".equals(path) || size == 0) {
            throw new Exception("");
        }

        // ??
        String t_name = path.substring(path.lastIndexOf("\\") + 1);
        // ??(????)
        String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);

        logger.debug("the file ext name:" + t_ext);

        // ???
        int allowFlag = 0;
        int allowedExtCount = allowedExt.length;
        for (; allowFlag < allowedExtCount; allowFlag++) {
            if (allowedExt[allowFlag].equals(t_ext.toLowerCase()))
                break;
        }
        if (allowFlag == allowedExtCount) {
            String error = ":";
            for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)
                error += "*." + allowedExt[allowFlag] + "  ";
            throw new Exception(error);
        }

        // ?
        String u_name = FileFactory.getInstance().getNextFileName("UP", t_ext, true);
        File temp = new File(u_name);

        int[] imgSize = getimgSize(fileItem);
        if ((imgSize[0] > 0 && imgSize[0] < 300) || (imgSize[1] > 0 && imgSize[1] < 300)) {
            throw new Exception("300x300");
        }

        logger.debug("to write file:" + temp);

        // ?
        fileItem.write(temp);

        temp = resizePic(temp);
        return temp;

    }

    throw new Exception("");

}

From source file:com.blog.fckeditor.ConnectorServlet.java

/**
 * Manage the <code>POST</code> requests (<code>FileUpload</code>).<br />
 * /*ww w .  j a  v  a2s.co m*/
 * The servlet accepts commands sent in the following format:<br />
 * <code>connector?Command=&lt;FileUpload&gt;&Type=&lt;ResourceType&gt;&CurrentFolder=&lt;FolderPath&gt;</code>
 * with the file in the <code>POST</code> body.<br />
 * <br>
 * It stores an uploaded file (renames a file if another exists with the
 * same name) and then returns the JavaScript callback.
 */
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    logger.debug("Entering Connector#doPost");

    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");
    response.setHeader("Cache-Control", "no-cache");
    PrintWriter out = response.getWriter();

    String commandStr = request.getParameter("Command");
    String typeStr = request.getParameter("Type");
    String currentFolderStr = request.getParameter("CurrentFolder");

    logger.debug("Parameter Command: {}", commandStr);
    logger.debug("Parameter Type: {}", typeStr);
    logger.debug("Parameter CurrentFolder: {}", currentFolderStr);

    UploadResponse ur;

    // if this is a QuickUpload request, 'commandStr' and 'currentFolderStr'
    // are empty
    if (Utils.isEmpty(commandStr) && Utils.isEmpty(currentFolderStr)) {
        commandStr = "QuickUpload";
        currentFolderStr = "/";
    }

    if (!RequestCycleHandler.isEnabledForFileUpload(request))
        ur = new UploadResponse(UploadResponse.SC_SECURITY_ERROR, null, null,
                Messages.NOT_AUTHORIZED_FOR_UPLOAD);
    else if (!CommandHandler.isValidForPost(commandStr))
        ur = new UploadResponse(UploadResponse.SC_ERROR, null, null, Messages.INVALID_COMMAND);
    else if (typeStr != null && !ResourceTypeHandler.isValid(typeStr))
        ur = new UploadResponse(UploadResponse.SC_ERROR, null, null, Messages.INVALID_TYPE);
    else if (!UtilsFile.isValidPath(currentFolderStr))
        ur = UploadResponse.UR_INVALID_CURRENT_FOLDER;
    else {
        ResourceTypeHandler resourceType = ResourceTypeHandler.getDefaultResourceType(typeStr);

        String typePath = UtilsFile.constructServerSidePath(request, resourceType);
        String typeDirPath = getServletContext().getRealPath(typePath);

        File typeDir = new File(typeDirPath);
        UtilsFile.checkDirAndCreate(typeDir);

        File currentDir = new File(typeDir, currentFolderStr);

        if (!currentDir.exists())
            ur = UploadResponse.UR_INVALID_CURRENT_FOLDER;
        else {

            String newFilename = null;
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            //
            upload.setHeaderEncoding("UTF-8");
            try {

                List<FileItem> items = upload.parseRequest(request);

                // We upload only one file at the same time
                FileItem uplFile = items.get(0);
                String rawName = UtilsFile.sanitizeFileName(uplFile.getName());
                String filename = FilenameUtils.getName(rawName);
                String baseName = FilenameUtils.removeExtension(filename);
                String extension = FilenameUtils.getExtension(filename);
                //
                filename = UUID.randomUUID().toString() + "." + extension;

                if (!ExtensionsHandler.isAllowed(resourceType, extension))
                    ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
                else {

                    // construct an unique file name
                    File pathToSave = new File(currentDir, filename);
                    int counter = 1;
                    while (pathToSave.exists()) {
                        newFilename = baseName.concat("(").concat(String.valueOf(counter)).concat(")")
                                .concat(".").concat(extension);
                        pathToSave = new File(currentDir, newFilename);
                        counter++;
                    }

                    if (Utils.isEmpty(newFilename))
                        ur = new UploadResponse(UploadResponse.SC_OK,
                                UtilsResponse.constructResponseUrl(request, resourceType, currentFolderStr,
                                        true, ConnectorHandler.isFullUrl()).concat(filename));
                    else
                        ur = new UploadResponse(UploadResponse.SC_RENAMED,
                                UtilsResponse.constructResponseUrl(request, resourceType, currentFolderStr,
                                        true, ConnectorHandler.isFullUrl()).concat(newFilename),
                                newFilename);

                    // secure image check
                    if (resourceType.equals(ResourceTypeHandler.IMAGE)
                            && ConnectorHandler.isSecureImageUploads()) {
                        if (UtilsFile.isImage(uplFile.getInputStream()))
                            uplFile.write(pathToSave);
                        else {
                            uplFile.delete();
                            ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
                        }
                    } else
                        uplFile.write(pathToSave);

                }
            } catch (Exception e) {
                ur = new UploadResponse(UploadResponse.SC_SECURITY_ERROR);
            }
        }

    }

    out.print(ur);
    out.flush();
    out.close();

    logger.debug("Exiting Connector#doPost");
}

From source file:com.zjl.oa.fckeditor.ConnectorServlet.java

/**
 * Manage the <code>POST</code> requests (<code>FileUpload</code>).<br />
 * /*ww w .  j a v  a2s  . c  om*/
 * The servlet accepts commands sent in the following format:<br />
 * <code>connector?Command=&lt;FileUpload&gt;&Type=&lt;ResourceType&gt;&CurrentFolder=&lt;FolderPath&gt;</code>
 * with the file in the <code>POST</code> body.<br />
 * <br>
 * It stores an uploaded file (renames a file if another exists with the
 * same name) and then returns the JavaScript callback.
 */
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    logger.debug("Entering Connector#doPost");

    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");
    response.setHeader("Cache-Control", "no-cache");
    PrintWriter out = response.getWriter();

    String commandStr = request.getParameter("Command");
    String typeStr = request.getParameter("Type");
    String currentFolderStr = request.getParameter("CurrentFolder");

    logger.debug("Parameter Command: {}", commandStr);
    logger.debug("Parameter Type: {}", typeStr);
    logger.debug("Parameter CurrentFolder: {}", currentFolderStr);

    UploadResponse ur;

    // if this is a QuickUpload request, 'commandStr' and 'currentFolderStr'
    // are empty
    if (Utils.isEmpty(commandStr) && Utils.isEmpty(currentFolderStr)) {
        commandStr = "QuickUpload";
        currentFolderStr = "/";
    }

    if (!RequestCycleHandler.isEnabledForFileUpload(request))
        ur = new UploadResponse(UploadResponse.SC_SECURITY_ERROR, null, null,
                Messages.NOT_AUTHORIZED_FOR_UPLOAD);
    else if (!CommandHandler.isValidForPost(commandStr))
        ur = new UploadResponse(UploadResponse.SC_ERROR, null, null, Messages.INVALID_COMMAND);
    else if (typeStr != null && !ResourceTypeHandler.isValid(typeStr))
        ur = new UploadResponse(UploadResponse.SC_ERROR, null, null, Messages.INVALID_TYPE);
    else if (!UtilsFile.isValidPath(currentFolderStr))
        ur = UploadResponse.UR_INVALID_CURRENT_FOLDER;
    else {
        ResourceTypeHandler resourceType = ResourceTypeHandler.getDefaultResourceType(typeStr);

        String typePath = UtilsFile.constructServerSidePath(request, resourceType);
        String typeDirPath = getServletContext().getRealPath(typePath);

        File typeDir = new File(typeDirPath);
        UtilsFile.checkDirAndCreate(typeDir);

        File currentDir = new File(typeDir, currentFolderStr);

        if (!currentDir.exists())
            ur = UploadResponse.UR_INVALID_CURRENT_FOLDER;
        else {

            String newFilename = null;
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            //??
            upload.setHeaderEncoding("UTF-8");
            try {

                List<FileItem> items = upload.parseRequest(request);

                // We upload only one file at the same time
                FileItem uplFile = items.get(0);
                String rawName = UtilsFile.sanitizeFileName(uplFile.getName());
                String filename = FilenameUtils.getName(rawName);
                String baseName = FilenameUtils.removeExtension(filename);
                String extension = FilenameUtils.getExtension(filename);
                //???
                filename = UUID.randomUUID().toString() + "." + extension;

                if (!ExtensionsHandler.isAllowed(resourceType, extension))
                    ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
                else {

                    // construct an unique file name
                    File pathToSave = new File(currentDir, filename);
                    int counter = 1;
                    while (pathToSave.exists()) {
                        newFilename = baseName.concat("(").concat(String.valueOf(counter)).concat(")")
                                .concat(".").concat(extension);
                        pathToSave = new File(currentDir, newFilename);
                        counter++;
                    }

                    if (Utils.isEmpty(newFilename))
                        ur = new UploadResponse(UploadResponse.SC_OK,
                                UtilsResponse.constructResponseUrl(request, resourceType, currentFolderStr,
                                        true, ConnectorHandler.isFullUrl()).concat(filename));
                    else
                        ur = new UploadResponse(UploadResponse.SC_RENAMED,
                                UtilsResponse.constructResponseUrl(request, resourceType, currentFolderStr,
                                        true, ConnectorHandler.isFullUrl()).concat(newFilename),
                                newFilename);

                    // secure image check
                    if (resourceType.equals(ResourceTypeHandler.IMAGE)
                            && ConnectorHandler.isSecureImageUploads()) {
                        if (UtilsFile.isImage(uplFile.getInputStream()))
                            uplFile.write(pathToSave);
                        else {
                            uplFile.delete();
                            ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
                        }
                    } else
                        uplFile.write(pathToSave);

                }
            } catch (Exception e) {
                ur = new UploadResponse(UploadResponse.SC_SECURITY_ERROR);
            }
        }

    }

    out.print(ur);
    out.flush();
    out.close();

    logger.debug("Exiting Connector#doPost");
}

From source file:com.laijie.fckeditor.ConnectorServlet.java

/**
 * Manage the <code>POST</code> requests (<code>FileUpload</code>).<br />
 * /*from w w  w  .java2s  .com*/
 * The servlet accepts commands sent in the following format:<br />
 * <code>connector?Command=&lt;FileUpload&gt;&Type=&lt;ResourceType&gt;&CurrentFolder=&lt;FolderPath&gt;</code>
 * with the file in the <code>POST</code> body.<br />
 * <br>
 * It stores an uploaded file (renames a file if another exists with the
 * same name) and then returns the JavaScript callback.
 */
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    logger.debug("Entering Connector#doPost");

    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");
    response.setHeader("Cache-Control", "no-cache");
    PrintWriter out = response.getWriter();

    String commandStr = request.getParameter("Command");
    String typeStr = request.getParameter("Type");
    String currentFolderStr = request.getParameter("CurrentFolder");

    logger.debug("Parameter Command: {}", commandStr);
    logger.debug("Parameter Type: {}", typeStr);
    logger.debug("Parameter CurrentFolder: {}", currentFolderStr);

    UploadResponse ur;

    // if this is a QuickUpload request, 'commandStr' and 'currentFolderStr'
    // are empty
    if (Utils.isEmpty(commandStr) && Utils.isEmpty(currentFolderStr)) {
        commandStr = "QuickUpload";
        currentFolderStr = "/";
    }

    if (!RequestCycleHandler.isEnabledForFileUpload(request))
        ur = new UploadResponse(UploadResponse.SC_SECURITY_ERROR, null, null,
                Messages.NOT_AUTHORIZED_FOR_UPLOAD);
    else if (!CommandHandler.isValidForPost(commandStr))
        ur = new UploadResponse(UploadResponse.SC_ERROR, null, null, Messages.INVALID_COMMAND);
    else if (typeStr != null && !ResourceTypeHandler.isValid(typeStr))
        ur = new UploadResponse(UploadResponse.SC_ERROR, null, null, Messages.INVALID_TYPE);
    else if (!UtilsFile.isValidPath(currentFolderStr))
        ur = UploadResponse.UR_INVALID_CURRENT_FOLDER;
    else {
        ResourceTypeHandler resourceType = ResourceTypeHandler.getDefaultResourceType(typeStr);

        String typePath = UtilsFile.constructServerSidePath(request, resourceType);
        String typeDirPath = getServletContext().getRealPath(typePath);

        File typeDir = new File(typeDirPath);
        UtilsFile.checkDirAndCreate(typeDir);

        File currentDir = new File(typeDir, currentFolderStr);

        if (!currentDir.exists())
            ur = UploadResponse.UR_INVALID_CURRENT_FOLDER;
        else {

            String newFilename = null;
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            //
            upload.setHeaderEncoding("UTF-8");
            try {

                List<FileItem> items = upload.parseRequest(request);

                // We upload only one file at the same time
                FileItem uplFile = items.get(0);
                String rawName = UtilsFile.sanitizeFileName(uplFile.getName());
                String filename = FilenameUtils.getName(rawName);
                String baseName = FilenameUtils.removeExtension(filename);
                String extension = FilenameUtils.getExtension(filename);
                //
                filename = UUID.randomUUID().toString() + "." + extension;

                if (!ExtensionsHandler.isAllowed(resourceType, extension))
                    ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
                else {

                    // construct an unique file name
                    File pathToSave = new File(currentDir, filename);
                    int counter = 1;
                    while (pathToSave.exists()) {
                        newFilename = baseName.concat("(").concat(String.valueOf(counter)).concat(")")
                                .concat(".").concat(extension);
                        pathToSave = new File(currentDir, newFilename);
                        counter++;
                    }

                    if (Utils.isEmpty(newFilename))
                        ur = new UploadResponse(UploadResponse.SC_OK,
                                UtilsResponse.constructResponseUrl(request, resourceType, currentFolderStr,
                                        true, ConnectorHandler.isFullUrl()).concat(filename));
                    else
                        ur = new UploadResponse(UploadResponse.SC_RENAMED,
                                UtilsResponse.constructResponseUrl(request, resourceType, currentFolderStr,
                                        true, ConnectorHandler.isFullUrl()).concat(newFilename),
                                newFilename);

                    // secure image check
                    if (resourceType.equals(ResourceTypeHandler.IMAGE)
                            && ConnectorHandler.isSecureImageUploads()) {
                        if (UtilsFile.isImage(uplFile.getInputStream()))
                            uplFile.write(pathToSave);
                        else {
                            uplFile.delete();
                            ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
                        }
                    } else
                        uplFile.write(pathToSave);

                }
            } catch (Exception e) {
                ur = new UploadResponse(UploadResponse.SC_SECURITY_ERROR);
            }
        }

    }

    out.print(ur);
    out.flush();
    out.close();

    logger.debug("Exiting Connector#doPost");
}