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

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

Introduction

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

Prototype

InputStream getInputStream() throws IOException;

Source Link

Document

Returns an java.io.InputStream InputStream that can be used to retrieve the contents of the file.

Usage

From source file:org.dspace.app.itemimport.WebServiceImport.java

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    //String command = null; // add replace remove, etc
    String sourcedir = request.getParameter("dublin_core");
    //String mapfile = null;
    String eperson = request.getParameter("eperson"); // db ID or email
    //eperson="alex@parliaments.info";
    String[] collections = new String[1];//{""};//null; // db ID or handles
    //collections[0]=request.getParameter("collection");

    List<FileDetails> filelist = new ArrayList<FileDetails>();
    // Check that we have a file upload request
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    if (isMultipart) {
        // Create a factory for disk-based file items
        FileItemFactory factory = new DiskFileItemFactory();

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);

        // Parse the request
        List /* FileItem */ items = null;
        try {/*from  ww w.j a  v  a2 s. c  o m*/
            items = upload.parseRequest(request);
        } catch (Exception e) {
            e.printStackTrace();
        }

        // Process the uploaded items
        Iterator iter = items.iterator();
        while (iter.hasNext()) {
            FileItem item = (FileItem) iter.next();

            System.out.println("\n\n\nat while fileitem");
            if (item.isFormField()) {
                //processFormField(item);
                //if (item.isFormField()) {
                String name = item.getFieldName();
                String value = item.getString();
                if (name.equalsIgnoreCase("collection")) {
                    collections[0] = value;
                } else if (name.equalsIgnoreCase("eperson")) {
                    eperson = value;
                }
                if (name.equalsIgnoreCase("dublin_core")) {
                    sourcedir = value;
                }
                //}
            } else {
                System.out.println("\n\n\nat while fileitem not from field");
                FileDetails fd = new FileDetails();
                fd.setIs(item.getInputStream());
                fd.setName(item.getName());
                filelist.add(fd);
                for (FileDetails fdd : filelist) {
                    System.out.println("\n\nEcho:" + fdd.getName());
                }
            }
        }
    }

    System.out.println("\n\ncollection is:" + collections[0] + "    " + eperson + "    " + sourcedir);
    int status = 0;

    // do checks around mapfile - if mapfile exists and 'add' is selected,
    // resume must be chosen
    //File myFile = new File(mapfile);

    WebServiceImport myloader = new WebServiceImport();

    // create a context
    Context c = null;
    try {
        c = new Context();
    } catch (Exception e) {
        e.printStackTrace();
    }

    // find the EPerson, assign to context
    EPerson myEPerson = null;

    if (eperson.indexOf('@') != -1) {
        // @ sign, must be an email
        try {
            myEPerson = EPerson.findByEmail(c, eperson);
        } catch (Exception e) {
            e.printStackTrace();
        }

    } else {
        try {
            myEPerson = EPerson.find(c, Integer.parseInt(eperson));
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    if (myEPerson == null) {
        System.out.println("Error, eperson cannot be found: " + eperson);
        //System.exit(1);
        return;
    }

    c.setCurrentUser(myEPerson);

    // find collections
    Collection[] mycollections = null;

    // don't need to validate collections set if command is "delete"

    //if (!command.equals("delete"))
    //{
    System.out.println("Destination collections:");

    System.out.println("\n\nleng" + collections.length);
    mycollections = new Collection[collections.length];

    // validate each collection arg to see if it's a real collection
    for (int i = 0; i < collections.length; i++) {
        System.out.println("\n\nlen2:" + collections[0]);
        // is the ID a handle?
        //if (collections[i].indexOf('/') != -1)
        //{
        System.out.println("\n\nIs a collection handle");
        // string has a / so it must be a handle - try and resolve
        // it
        mycollections[i] = null;
        try {
            mycollections[i] = (Collection) HandleManager.resolveToObject(c, collections[i]);
        } catch (Exception e) {
            e.printStackTrace();
        }

        // resolved, now make sure it's a collection
        if ((mycollections[i] == null) || (mycollections[i].getType() != Constants.COLLECTION)) {
            mycollections[i] = null;
        }
        //}
        // not a handle, try and treat it as an integer collection
        // database ID
        /*else if (collections[i] != null)
        {
           System.out.println("\n\nIs a database Id");
            mycollections[i] = null;
            try {
               mycollections[i]=Collection.find(c, Integer
                        .parseInt(collections[i]));
            }catch(Exception e) {
               e.printStackTrace();
            }
        }*/

        // was the collection valid?
        if (mycollections[i] == null) {
            throw new IllegalArgumentException("Cannot resolve " + collections[i] + " to collection");
        }

        // print progress info
        String owningPrefix = "";

        if (i == 0) {
            owningPrefix = "Owning ";
        }

        System.out.println("\n\nGotten collection");
        System.out.println(owningPrefix + " Collection: " + mycollections[i].getMetadata("name"));
    }
    //} // end of validating collections

    try {
        c.setIgnoreAuthorization(true);

        /*if (command.equals("add"))
        {*/
        myloader.addItems(c, mycollections, sourcedir/*, mapfile*/, template, request, filelist);
        /*}*/

        // complete all transactions
        c.complete();
    } catch (Exception e) {
        // abort all operations
        /*if (mapOut != null)
        {
        mapOut.close();
        }
                
        mapOut = null;*/

        c.abort();
        e.printStackTrace();
        System.out.println(e);
        status = 1;
    }

    /*if (mapOut != null)
    {
    mapOut.close();
    }*/

    if (isTest) {
        System.out.println("***End of Test Run***");
    }
    //System.exit(status);
    return;
}

From source file:org.dspace.app.webui.json.SubmissionLookupJSONRequest.java

@Override
public void doJSONRequest(Context context, HttpServletRequest req, HttpServletResponse resp)
        throws AuthorizeException, IOException {
    Gson json = new Gson();
    String suuid = req.getParameter("s_uuid");
    SubmissionLookupDTO subDTO = service.getSubmissionLookupDTO(req, suuid);
    // Check that we have a file upload request
    boolean isMultipart = ServletFileUpload.isMultipartContent(req);
    if ("identifiers".equalsIgnoreCase(req.getParameter("type"))) {
        Map<String, Set<String>> identifiers = new HashMap<String, Set<String>>();
        Enumeration e = req.getParameterNames();

        while (e.hasMoreElements()) {
            String parameterName = (String) e.nextElement();
            String parameterValue = req.getParameter(parameterName);

            if (parameterName.startsWith("identifier_") && StringUtils.isNotBlank(parameterValue)) {
                Set<String> set = new HashSet<String>();
                set.add(parameterValue);
                identifiers.put(parameterName.substring("identifier_".length()), set);
            }/* ww  w .  jav  a2s .c om*/
        }

        List<ItemSubmissionLookupDTO> result = new ArrayList<ItemSubmissionLookupDTO>();

        TransformationEngine transformationEngine = service.getPhase1TransformationEngine();
        if (transformationEngine != null) {
            MultipleSubmissionLookupDataLoader dataLoader = (MultipleSubmissionLookupDataLoader) transformationEngine
                    .getDataLoader();
            dataLoader.setIdentifiers(identifiers);

            try {
                SubmissionLookupOutputGenerator outputGenerator = (SubmissionLookupOutputGenerator) transformationEngine
                        .getOutputGenerator();
                outputGenerator.setDtoList(new ArrayList<ItemSubmissionLookupDTO>());
                log.debug("BTE transformation is about to start!");
                transformationEngine.transform(new TransformationSpec());
                log.debug("BTE transformation finished!");
                result = outputGenerator.getDtoList();
            } catch (BadTransformationSpec e1) {
                log.error(e1.getMessage(), e1);
            } catch (MalformedSourceException e1) {
                log.error(e1.getMessage(), e1);
            }
        }

        subDTO.setItems(result);
        service.storeDTOs(req, suuid, subDTO);
        List<Map<String, Object>> dto = getLightResultList(result);
        JsonElement tree = json.toJsonTree(dto);
        JsonObject jo = new JsonObject();
        jo.add("result", tree);
        resp.getWriter().write(jo.toString());

    } else if ("search".equalsIgnoreCase(req.getParameter("type"))) {
        String title = req.getParameter("title");
        String author = req.getParameter("authors");
        int year = UIUtil.getIntParameter(req, "year");

        Map<String, Set<String>> searchTerms = new HashMap<String, Set<String>>();
        Set<String> tmp1 = new HashSet<String>();
        tmp1.add(title);
        Set<String> tmp2 = new HashSet<String>();
        tmp2.add(author);
        Set<String> tmp3 = new HashSet<String>();
        tmp3.add(String.valueOf(year));
        searchTerms.put("title", tmp1);
        searchTerms.put("authors", tmp2);
        searchTerms.put("year", tmp3);

        List<ItemSubmissionLookupDTO> result = new ArrayList<ItemSubmissionLookupDTO>();

        TransformationEngine transformationEngine = service.getPhase1TransformationEngine();
        if (transformationEngine != null) {
            MultipleSubmissionLookupDataLoader dataLoader = (MultipleSubmissionLookupDataLoader) transformationEngine
                    .getDataLoader();
            dataLoader.setSearchTerms(searchTerms);

            try {
                SubmissionLookupOutputGenerator outputGenerator = (SubmissionLookupOutputGenerator) transformationEngine
                        .getOutputGenerator();
                outputGenerator.setDtoList(new ArrayList<ItemSubmissionLookupDTO>());
                log.debug("BTE transformation is about to start!");
                transformationEngine.transform(new TransformationSpec());
                log.debug("BTE transformation finished!");
                result = outputGenerator.getDtoList();
            } catch (BadTransformationSpec e1) {
                log.error(e1.getMessage(), e1);
            } catch (MalformedSourceException e1) {
                log.error(e1.getMessage(), e1);
            }
        }

        subDTO.setItems(result);
        service.storeDTOs(req, suuid, subDTO);
        List<Map<String, Object>> dto = getLightResultList(result);
        JsonElement tree = json.toJsonTree(dto);
        JsonObject jo = new JsonObject();
        jo.add("result", tree);
        resp.getWriter().write(jo.toString());
    } else if ("details".equalsIgnoreCase(req.getParameter("type"))) {
        String i_uuid = req.getParameter("i_uuid");
        Map<String, Object> dto = getDetails(subDTO.getLookupItem(i_uuid), context);
        JsonElement tree = json.toJsonTree(dto);
        JsonObject jo = new JsonObject();
        jo.add("result", tree);
        resp.getWriter().write(jo.toString());
    } else if (isMultipart) {

        // Create a factory for disk-based file items
        FileItemFactory factory = new DiskFileItemFactory();

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);
        // Parse the request
        Map<String, String> valueMap = new HashMap<String, String>();
        InputStream io = null;

        // Parse the request
        List<FileItem> iter;
        String filename = null;
        try {
            iter = upload.parseRequest(req);
            for (FileItem item : iter) {
                String name = item.getFieldName();
                InputStream stream = item.getInputStream();
                if (item.isFormField()) {
                    String value = Streams.asString(stream);
                    valueMap.put(name, value);
                } else {
                    io = stream;
                }
            }
        } catch (FileUploadException e) {
            throw new IOException(e);
        }

        suuid = valueMap.get("s_uuid");
        subDTO = service.getSubmissionLookupDTO(req, suuid);

        List<ItemSubmissionLookupDTO> result = new ArrayList<ItemSubmissionLookupDTO>();

        TransformationEngine transformationEngine = service.getPhase1TransformationEngine();
        if (transformationEngine != null) {
            MultipleSubmissionLookupDataLoader dataLoader = (MultipleSubmissionLookupDataLoader) transformationEngine
                    .getDataLoader();

            String tempDir = (ConfigurationManager.getProperty("upload.temp.dir") != null)
                    ? ConfigurationManager.getProperty("upload.temp.dir")
                    : System.getProperty("java.io.tmpdir");
            File uploadDir = new File(tempDir);
            if (!uploadDir.exists()) {
                if (!uploadDir.mkdir()) {
                    uploadDir = null;
                }
            }
            File file = File.createTempFile("submissionlookup-loader", ".temp", uploadDir);
            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
            Utils.bufferedCopy(io, out);
            dataLoader.setFile(file.getAbsolutePath(), valueMap.get("provider_loader"));

            try {
                SubmissionLookupOutputGenerator outputGenerator = (SubmissionLookupOutputGenerator) transformationEngine
                        .getOutputGenerator();
                outputGenerator.setDtoList(new ArrayList<ItemSubmissionLookupDTO>());
                log.debug("BTE transformation is about to start!");
                transformationEngine.transform(new TransformationSpec());
                log.debug("BTE transformation finished!");
                result = outputGenerator.getDtoList();
            } catch (BadTransformationSpec e1) {
                log.error(e1.getMessage(), e1);
            } catch (MalformedSourceException e1) {
                log.error(e1.getMessage(), e1);
            } finally {
                file.delete();
            }
        }
        subDTO.setItems(result);
        service.storeDTOs(req, suuid, subDTO);
        List<Map<String, Object>> dto = getLightResultList(result);
        if (valueMap.containsKey("skip_loader")) {
            if (valueMap.get("skip_loader").equals("true")) {
                Map<String, Object> skip = new HashMap<String, Object>();
                skip.put("skip", Boolean.TRUE);
                skip.put("uuid", valueMap.containsKey("s_uuid") ? suuid : -1);
                skip.put("collectionid",
                        valueMap.containsKey("select-collection-file") ? valueMap.get("select-collection-file")
                                : -1);
                dto.add(skip);
            }
        }
        JsonElement tree = json.toJsonTree(dto);
        JsonObject jo = new JsonObject();
        jo.add("result", tree);
        resp.setContentType("text/plain");
        //            if you works in localhost mode and use IE10 to debug the feature uncomment the follow line
        //            resp.setHeader("Access-Control-Allow-Origin","*");
        resp.getWriter().write(jo.toString());
    }
}

From source file:org.eclipse.che.api.factory.FactoryService.java

/**
 * Save factory to storage and return stored data. Field 'factoryUrl' should contains factory url information.
 * Fields with images should be named 'image'. Acceptable image size 100x100 pixels.
 * If vcs is not set in factory URL it will be set with "git" value.
 *
 * @param formData/*from   w ww.  jav  a 2s.c o  m*/
 *         - http request form data
 * @param uriInfo
 *         - url context
 * @return - stored data
 * @throws org.eclipse.che.api.core.ApiException
 *         - {@link org.eclipse.che.api.core.ConflictException} when factory url json is not found
 *         - {@link org.eclipse.che.api.core.ConflictException} when vcs is unsupported
 *         - {@link org.eclipse.che.api.core.ConflictException} when image content can't be read
 *         - {@link org.eclipse.che.api.core.ConflictException} when image media type is unsupported
 *         - {@link org.eclipse.che.api.core.ConflictException} when image height or length isn't equal to 100 pixels
 *         - {@link org.eclipse.che.api.core.ConflictException} when if image is too big
 *         - {@link org.eclipse.che.api.core.ServerException} when internal server error occurs
 */
@ApiOperation(value = "Create a Factory and return data", notes = "Save factory to storage and return stored data. Field 'factoryUrl' should contains factory url information.", response = Factory.class, position = 1)
@ApiResponses(value = { @ApiResponse(code = 200, message = "OK"),
        @ApiResponse(code = 409, message = "Conflict error. Some parameter is missing"),
        @ApiResponse(code = 500, message = "Unable to identify user from context") })
@RolesAllowed("user")
@POST
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
public Factory saveFactory(Iterator<FileItem> formData, @Context UriInfo uriInfo) throws ApiException {
    try {
        EnvironmentContext context = EnvironmentContext.getCurrent();
        if (context.getUser() == null || context.getUser().getName() == null
                || context.getUser().getId() == null) {
            throw new ServerException("Unable to identify user from context");
        }

        Set<FactoryImage> images = new HashSet<>();
        Factory factory = null;

        while (formData.hasNext()) {
            FileItem item = formData.next();
            String fieldName = item.getFieldName();
            if (fieldName.equals("factoryUrl")) {
                try {
                    factory = factoryBuilder.buildEncoded(item.getInputStream());
                } catch (JsonSyntaxException e) {
                    throw new ConflictException("You have provided an invalid JSON.  For more information, "
                            + "please visit http://docs.codenvy.com/user/creating-factories/factory-parameter-reference/");
                }
            } else if (fieldName.equals("image")) {
                try (InputStream inputStream = item.getInputStream()) {
                    FactoryImage factoryImage = FactoryImage.createImage(inputStream, item.getContentType(),
                            NameGenerator.generate(null, 16));
                    if (factoryImage.hasContent()) {
                        images.add(factoryImage);
                    }
                }
            }
        }

        if (factory == null) {
            LOG.warn("No factory URL information found in 'factoryUrl' section of multipart form-data.");
            throw new ConflictException(
                    "No factory URL information found in 'factoryUrl' section of multipart/form-data.");
        }

        processDefaults(factory);
        createValidator.validateOnCreate(factory);
        String factoryId = factoryStore.saveFactory(factory, images);
        factory = factoryStore.getFactory(factoryId);
        factory = factory.withLinks(linksHelper.createLinks(factory, images, uriInfo));

        LOG.info(
                "EVENT#factory-created# WS#{}# USER#{}# PROJECT#{}# TYPE#{}# REPO-URL#{}# FACTORY-URL#{}# AFFILIATE-ID#{}# ORG-ID#{}#",
                "", context.getUser().getName(), "",
                nullToEmpty(factory.getProject() != null ? factory.getProject().getType() : null),
                factory.getSource().getProject().getLocation(),
                linksHelper.getLinkByRelation(factory.getLinks(), "create-project").iterator().next().getHref(),
                "", nullToEmpty(factory.getCreator().getAccountId()));

        return factory;
    } catch (IOException e) {
        LOG.error(e.getLocalizedMessage(), e);
        throw new ServerException(e.getLocalizedMessage(), e);
    }
}

From source file:org.eclipse.che.api.factory.server.FactoryService.java

@POST
@Consumes(MULTIPART_FORM_DATA)//ww w  . j  a v a 2 s  . c  om
@Produces(APPLICATION_JSON)
@ApiOperation(value = "Create a new factory based on configuration and factory images", notes = "The field 'factory' is required")
@ApiResponses({ @ApiResponse(code = 200, message = "Factory successfully created"),
        @ApiResponse(code = 400, message = "Missed required parameters, parameters are not valid"),
        @ApiResponse(code = 403, message = "The user does not have rights to create factory"),
        @ApiResponse(code = 409, message = "When factory with given name and creator already exists"),
        @ApiResponse(code = 500, message = "Internal server error occurred") })
public FactoryDto saveFactory(Iterator<FileItem> formData)
        throws ForbiddenException, ConflictException, BadRequestException, ServerException {
    try {
        final Set<FactoryImage> images = new HashSet<>();
        FactoryDto factory = null;
        while (formData.hasNext()) {
            final FileItem item = formData.next();
            switch (item.getFieldName()) {
            case ("factory"): {
                try (InputStream factoryData = item.getInputStream()) {
                    factory = factoryBuilder.build(factoryData);
                } catch (JsonSyntaxException ex) {
                    throw new BadRequestException("Invalid JSON value of the field 'factory' provided");
                }
                break;
            }
            case ("image"): {
                try (InputStream imageData = item.getInputStream()) {
                    final FactoryImage image = createImage(imageData, item.getContentType(),
                            NameGenerator.generate(null, 16));
                    if (image.hasContent()) {
                        images.add(image);
                    }
                }
                break;
            }
            default:
                //DO NOTHING
            }
        }
        requiredNotNull(factory, "factory configuration");
        processDefaults(factory);
        AddExecAgentInEnvironmentUtil.addExecAgent(factory.getWorkspace());
        createValidator.validateOnCreate(factory);
        return injectLinks(asDto(factoryManager.saveFactory(factory, images)), images);
    } catch (IOException ioEx) {
        throw new ServerException(ioEx.getLocalizedMessage(), ioEx);
    }
}

From source file:org.eclipse.che.api.project.server.impl.FileItemUtils.java

static FileItemParsed parseFile(Iterator<FileItem> iterator) throws ServerException {
    List<FileItem> fileItems = new LinkedList<>();
    iterator.forEachRemaining(fileItems::add);

    List<FileItem> fileContents = fileItems.stream().filter(it -> !it.isFormField())
            .collect(Collectors.toList());

    if (fileContents.size() > 1) {
        throw new ServerException("Expected no more than one file to upload");
    }/*from   w w w  .  ja  v a  2s  . c om*/

    if (fileContents.size() < 1) {
        throw new ServerException("Can't find file for upload");
    }

    FileItem content = fileContents.iterator().next();

    InputStream inputStream;
    try {
        inputStream = content.getInputStream();
    } catch (IOException e) {
        throw new ServerException(e);
    }

    Optional<String> name = fileItems.stream().filter(FileItem::isFormField)
            .filter(it -> "name".equals(it.getFieldName())).map(FileItem::getString).map(String::trim)
            .filter(Objects::nonNull).filter(it -> !it.isEmpty()).findAny();

    Optional<Boolean> overwrite = fileItems.stream().filter(FileItem::isFormField)
            .filter(it -> "overwrite".equals(it.getFieldName())).map(FileItem::getString).map(String::trim)
            .map(Boolean::parseBoolean).findAny();

    return new FileItemParsed() {
        @Override
        public String getName() {
            return name.orElse(content.getName());
        }

        @Override
        public InputStream getContent() {
            return inputStream;
        }

        @Override
        public boolean getOverwrite() {
            return overwrite.orElse(false);
        }
    };
}

From source file:org.eclipse.che.api.project.server.impl.FileItemUtils.java

static FileItemParsed parseDir(Iterator<FileItem> iterator) throws ServerException {
    List<FileItem> fileItems = new LinkedList<>();
    iterator.forEachRemaining(fileItems::add);

    List<FileItem> fileContents = fileItems.stream().filter(it -> !it.isFormField())
            .collect(Collectors.toList());

    if (fileContents.size() > 1) {
        throw new ServerException("Expected no more than one file to upload");
    }/*from   w  w  w  . j  a v a  2s  .  co  m*/

    if (fileContents.size() < 1) {
        throw new ServerException("Can't find file for upload");
    }

    FileItem content = fileContents.iterator().next();

    InputStream inputStream;
    try {
        inputStream = content.getInputStream();
    } catch (IOException e) {
        throw new ServerException(e);
    }

    return new FileItemParsed() {
        @Override
        public String getName() {
            throw new UnsupportedOperationException("Not supported for directories");
        }

        @Override
        public InputStream getContent() {
            return inputStream;
        }

        @Override
        public boolean getOverwrite() {
            throw new UnsupportedOperationException("Not supported for directories");
        }
    };
}

From source file:org.eclipse.che.api.project.server.ProjectService.java

@POST
@Path("/upload/zipproject/{path:.*}")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces(MediaType.APPLICATION_JSON)//from ww  w.  ja v  a2  s . c o  m
@ApiOperation(value = "Upload zip project", notes = "Upload project from local zip", response = ProjectConfigDto.class)
@ApiResponses({ @ApiResponse(code = 200, message = ""),
        @ApiResponse(code = 401, message = "User not authorized to call this operation"),
        @ApiResponse(code = 403, message = "Forbidden operation"),
        @ApiResponse(code = 409, message = "Resource already exists"),
        @ApiResponse(code = 500, message = "Unsupported source type") })
public List<SourceEstimation> uploadProjectFromZip(
        @ApiParam(value = "Path in the project", required = true) @PathParam("path") String path,
        @ApiParam(value = "Force rewrite existing project", allowableValues = "true,false") @QueryParam("force") boolean force,
        Iterator<FileItem> formData) throws ServerException, IOException, ConflictException, ForbiddenException,
        NotFoundException, BadRequestException {
    // Not all importers uses virtual file system API. In this case virtual file system API doesn't get events and isn't able to set
    final FolderEntry baseProjectFolder = (FolderEntry) getVirtualFile(path, force);

    int stripNumber = 0;
    String projectName = "";
    String projectDescription = "";
    FileItem contentItem = null;

    while (formData.hasNext()) {
        FileItem item = formData.next();
        if (!item.isFormField()) {
            if (contentItem == null) {
                contentItem = item;
            } else {
                throw new ServerException("More then one upload file is found but only one is expected. ");
            }
        } else {
            switch (item.getFieldName()) {
            case ("name"):
                projectName = item.getString().trim();
                break;
            case ("description"):
                projectDescription = item.getString().trim();
                break;
            case ("skipFirstLevel"):
                stripNumber = Boolean.parseBoolean(item.getString().trim()) ? 1 : 0;
                break;
            }
        }
    }

    if (contentItem == null) {
        throw new ServerException("Cannot find zip file for upload.");
    }

    try (InputStream zip = contentItem.getInputStream()) {
        baseProjectFolder.getVirtualFile().unzip(zip, true, stripNumber);
    }

    return resolveSources(path);
}

From source file:org.eclipse.che.api.project.server.ProjectService.java

private static Response uploadFile(VirtualFile parent, Iterator<FileItem> formData)
        throws ForbiddenException, ConflictException, ServerException {
    try {/*from   w ww . ja  va2 s  .c om*/
        FileItem contentItem = null;
        String name = null;
        boolean overwrite = false;

        while (formData.hasNext()) {
            FileItem item = formData.next();
            if (!item.isFormField()) {
                if (contentItem == null) {
                    contentItem = item;
                } else {
                    throw new ServerException("More then one upload file is found but only one should be. ");
                }
            } else if ("name".equals(item.getFieldName())) {
                name = item.getString().trim();
            } else if ("overwrite".equals(item.getFieldName())) {
                overwrite = Boolean.parseBoolean(item.getString().trim());
            }
        }

        if (contentItem == null) {
            throw new ServerException("Cannot find file for upload. ");
        }
        if (name == null || name.isEmpty()) {
            name = contentItem.getName();
        }

        try {
            try {
                parent.createFile(name, contentItem.getInputStream());
            } catch (ConflictException e) {
                if (!overwrite) {
                    throw new ConflictException("Unable upload file. Item with the same name exists. ");
                }
                parent.getChild(org.eclipse.che.api.vfs.Path.of(name))
                        .updateContent(contentItem.getInputStream(), null);
            }
        } catch (IOException ioe) {
            throw new ServerException(ioe.getMessage(), ioe);
        }

        return Response.ok("", MediaType.TEXT_HTML).build();
    } catch (ForbiddenException | ConflictException | ServerException e) {
        HtmlErrorFormatter.sendErrorAsHTML(e);
        // never thrown
        throw e;
    }
}

From source file:org.eclipse.che.api.project.server.ProjectService.java

private static Response uploadZip(VirtualFile parent, Iterator<FileItem> formData)
        throws ForbiddenException, ConflictException, ServerException {
    try {//from  www. j  av a 2s. c o  m
        FileItem contentItem = null;
        boolean overwrite = false;
        boolean skipFirstLevel = false;
        while (formData.hasNext()) {
            FileItem item = formData.next();
            if (!item.isFormField()) {
                if (contentItem == null) {
                    contentItem = item;
                } else {
                    throw new ServerException("More then one upload file is found but only one should be. ");
                }
            } else if ("overwrite".equals(item.getFieldName())) {
                overwrite = Boolean.parseBoolean(item.getString().trim());
            } else if ("skipFirstLevel".equals(item.getFieldName())) {
                skipFirstLevel = Boolean.parseBoolean(item.getString().trim());
            }
        }
        if (contentItem == null) {
            throw new ServerException("Cannot find file for upload. ");
        }
        try {
            importZip(parent, contentItem.getInputStream(), overwrite, skipFirstLevel);
        } catch (IOException ioe) {
            throw new ServerException(ioe.getMessage(), ioe);
        }
        return Response.ok("", MediaType.TEXT_HTML).build();
    } catch (ForbiddenException | ConflictException | ServerException e) {
        HtmlErrorFormatter.sendErrorAsHTML(e);
        // never thrown
        throw e;
    }
}

From source file:org.eclipse.che.api.vfs.server.VirtualFileSystemImpl.java

public static Response uploadFile(VirtualFile parent, Iterator<FileItem> formData)
        throws ForbiddenException, ConflictException, ServerException {
    try {//  ww  w  .  ja  v  a2s.  co  m
        FileItem contentItem = null;
        String mediaType = null;
        String name = null;
        boolean overwrite = false;

        while (formData.hasNext()) {
            FileItem item = formData.next();
            if (!item.isFormField()) {
                if (contentItem == null) {
                    contentItem = item;
                } else {
                    throw new ServerException("More then one upload file is found but only one should be. ");
                }
            } else if ("mimeType".equals(item.getFieldName())) {
                mediaType = item.getString().trim();
            } else if ("name".equals(item.getFieldName())) {
                name = item.getString().trim();
            } else if ("overwrite".equals(item.getFieldName())) {
                overwrite = Boolean.parseBoolean(item.getString().trim());
            }
        }

        if (contentItem == null) {
            throw new ServerException("Cannot find file for upload. ");
        }
        if (name == null || name.isEmpty()) {
            name = contentItem.getName();
        }
        if (mediaType == null || mediaType.isEmpty()) {
            mediaType = contentItem.getContentType();
        }

        if (mediaType != null) {
            final MediaType mediaTypeType = MediaType.valueOf(mediaType);
            mediaType = mediaTypeType.getType() + '/' + mediaTypeType.getSubtype();
        }

        try {
            try {
                parent.createFile(name, mediaType, contentItem.getInputStream());
            } catch (ConflictException e) {
                if (!overwrite) {
                    throw new ConflictException("Unable upload file. Item with the same name exists. ");
                }
                parent.getChild(name).updateContent(mediaType, contentItem.getInputStream(), null);
            }
        } catch (IOException ioe) {
            throw new ServerException(ioe.getMessage(), ioe);
        }

        return Response.ok("", MediaType.TEXT_HTML).build();
    } catch (ForbiddenException | ConflictException | ServerException e) {
        HtmlErrorFormatter.sendErrorAsHTML(e);
        // never thrown
        throw e;
    }
}