@PostMapping("/") @ResponseBody ResponseEntity<StreamingResponseBody> post(@RequestPart final MultipartFile file) throws Exception { if (file.isEmpty()) { throw new ValidationException("file was empty"); } final HttpHeaders headers = new HttpHeaders(); headers.setContentDispositionFormData("filename", "sample.txt"); final StreamingResponseBody body = out -> out.write(file.getBytes()); return ResponseEntity.ok() .headers(headers) .contentType(MediaType.valueOf("application/force-download")) .body(body); }
@RequestMapping(value = "/user/avatar/update", method = RequestMethod.POST, consumes = { "multipart/form-data" }) public @ResponseBody GenericResponseBody userAvatarUpdate(@RequestPart("avatar_data") AvatarRequest avatarRequest, @RequestPart("avatar_file") MultipartFile file) { User authenticatedUser = new AuthenticationHolder().getAuthenticatedUser(); User persistentUser = userService.findByPK(authenticatedUser.getId()); try { persistentUser.setPicture(Utility.cropImage(file.getBytes(), avatarRequest.getX().intValue(), avatarRequest.getY().intValue(), avatarRequest.getWidth().intValue(), avatarRequest.getHeight().intValue(), avatarRequest.getScaleX() == -1 ? true : false, avatarRequest.getScaleY() == -1 ? true : false, avatarRequest.getRotate())); } catch (BusinessException | IOException e) { return new GenericResponseBody(GenericResponseBodyState.ERROR); } userService.update(persistentUser); return new GenericResponseBody(GenericResponseBodyState.SUCCESS); }
/** * @api {patch} /credentials/:name Update * @apiParam {String} name Credential name to update * * @apiParamExample {multipart} RSA-Multipart-Body: * the same as create * * @apiGroup Credenital */ @PatchMapping(path = "/{name}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @WebSecurity(action = Actions.ADMIN_UPDATE) public Credential update(@PathVariable String name, @RequestParam(name = "detail") String detailJson, @RequestPart(name = "android-file", required = false) MultipartFile androidFile, @RequestPart(name = "p12-files", required = false) MultipartFile[] p12Files, @RequestPart(name = "pp-files", required = false) MultipartFile[] ppFiles) { // check name is existed if (!credentialService.existed(name)) { throw new IllegalParameterException("Credential name does not existed"); } CredentialDetail detail = jsonConverter.getGsonForReader().fromJson(detailJson, CredentialDetail.class); return createOrUpdate(name, detail, androidFile, p12Files, ppFiles); }
/** * Supports the following: * <ul> * <li>annotated with {@code @RequestPart} * <li>of type {@link MultipartFile} unless annotated with {@code @RequestParam} * <li>of type {@code javax.servlet.http.Part} unless annotated with {@code @RequestParam} * </ul> */ @Override public boolean supportsParameter(MethodParameter parameter) { if (parameter.hasParameterAnnotation(RequestPart.class)) { return true; } else { if (parameter.hasParameterAnnotation(RequestParam.class)){ return false; } else if (MultipartFile.class == parameter.getParameterType()) { return true; } else if ("javax.servlet.http.Part".equals(parameter.getParameterType().getName())) { return true; } else { return false; } } }
@SuppressWarnings("unused") public void handle(@RequestPart SimpleBean requestPart, @RequestPart(value="requestPart", required=false) SimpleBean namedRequestPart, @Valid @RequestPart("requestPart") SimpleBean validRequestPart, @RequestPart("requestPart") MultipartFile multipartFile, @RequestPart("requestPart") List<MultipartFile> multipartFileList, @RequestPart("requestPart") MultipartFile[] multipartFileArray, int i, MultipartFile multipartFileNotAnnot, Part part, @RequestPart("part") List<Part> partList, @RequestPart("part") Part[] partArray, @RequestParam MultipartFile requestParamAnnot, Optional<MultipartFile> optionalMultipartFile, Optional<Part> optionalPart, @RequestPart("requestPart") Optional<SimpleBean> optionalRequestPart) { }
public void params(@RequestParam(name = "name", defaultValue = "bar") String param1, @RequestParam("name") String[] param2, @RequestParam("name") Map<?, ?> param3, @RequestParam("mfile") MultipartFile param4, @RequestParam("mfilelist") List<MultipartFile> param5, @RequestParam("mfilearray") MultipartFile[] param6, @RequestParam("pfile") Part param7, @RequestParam("pfilelist") List<Part> param8, @RequestParam("pfilearray") Part[] param9, @RequestParam Map<?, ?> param10, String stringNotAnnot, MultipartFile multipartFileNotAnnot, List<MultipartFile> multipartFileList, Part part, @RequestPart MultipartFile requestPartAnnot, @RequestParam("name") String paramRequired, @RequestParam(name = "name", required = false) String paramNotRequired, @RequestParam("name") Optional<Integer> paramOptional) { }
@RequestMapping(value = "/mods", method = RequestMethod.POST) public UploadModsResponse uploadMods(@RequestPart("files") MultipartFile[] modFiles) throws IOException, MccyException { LOG.debug("Upload mods provided: {}", modFiles); UploadModsResponse response = new UploadModsResponse(); for (MultipartFile modFile : modFiles) { try { response.getMods().add(modsService.ingest(modFile)); } catch (MccyException | IOException e) { UploadModsResponse.Failed failed = new UploadModsResponse.Failed(); failed.setReason(e.getMessage()+"("+e.getClass()+")"); failed.setFilename(modFile.getOriginalFilename()); response.addFailed(failed); LOG.warn("Failed to ingest {}", e, modFile); } } return response; }
@RequestMapping(value = Constants.BASEURL_REST + "/static/add", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<?> addStaticResource(@PathVariable String siteUrl, @RequestPart("file") Part file, @RequestParam String path) { String originalFileName = file.getSubmittedFileName(); if(originalFileName != null) { try { String fileName = fileSystemUtil.addStaticResource(getSite(siteUrl), path, file.getInputStream()); logger.debug("Static resource added successful: {}", fileName); return Response.ok(fileName); } catch (Exception e) { return Response.error(e.getMessage()); } } else { return Response.error("Empty file."); } }
/** * Supports the following: * <ul> * <li>Annotated with {@code @RequestPart} * <li>Of type {@link MultipartFile} unless annotated with {@code @RequestParam}. * <li>Of type {@code javax.servlet.http.Part} unless annotated with {@code @RequestParam}. * </ul> */ public boolean supportsParameter(MethodParameter parameter) { if (parameter.hasParameterAnnotation(RequestPart.class)) { return true; } else { if (parameter.hasParameterAnnotation(RequestParam.class)){ return false; } else if (MultipartFile.class.equals(parameter.getParameterType())) { return true; } else if ("javax.servlet.http.Part".equals(parameter.getParameterType().getName())) { return true; } else { return false; } } }
@PreAuthorize("hasRole('ROLE_ADMIN') or hasAuthority('problem_add')") @RequestMapping(value = "/problems", method = RequestMethod.POST) public ProblemDetailView addProblem(@RequestPart("problem") ProblemDetailView problemDetailView, @RequestParam(value = "contentFile", required = false) MultipartFile contentFile) throws FormException, IOException { String contentType = null; byte[] content = null; if (contentFile != null) { contentType = contentFile.getContentType(); content = Base64.getEncoder().encode(contentFile.getBytes()); } problemDetailDao.createProblem(problemDetailView, contentType, content); return problemDetailView; }
@PreAuthorize("hasRole('ROLE_ADMIN') or hasPermission(@problemsEndpoint.getProblemGroupCodes(#problemCode), 'problem_change')") @RequestMapping(value = "/problems/{problemCode}", method = RequestMethod.PUT) @CacheEvict(value = "group_problems", allEntries = true) public ProblemDetailView editProblem(@PathVariable("problemCode") String problemCode, @RequestPart("problem") ProblemDetailView problemDetailView, @RequestParam(value = "contentFile", required = false) MultipartFile contentFile) throws FormException, IOException { String contentType = null; byte[] content = null; if (contentFile != null) { contentType = contentFile.getContentType(); content = Base64.getEncoder().encode(contentFile.getBytes()); } problemDetailDao.editProblem(problemCode, problemDetailView, contentType, content); return problemDetailView; }
@AuthenticationRequired @RequestMapping(value = "certificates/pem", method = RequestMethod.POST, produces = { "application/json" }) @ResponseStatus(value = HttpStatus.OK) @ResponseBody public CertificateStatus uploadKey(HttpServletRequest request, HttpServletResponse response, @RequestPart(value = "file") MultipartFile file, @RequestPart(value = "bundle") MultipartFile bundle, @RequestPart(value = "key") MultipartFile key, @RequestParam(value = "passphrase") String passphrase) throws AccessDeniedException, UnauthorizedException, SessionTimeoutException { return replaceKey(request, response, file, bundle, key, passphrase, null); }
@PostMapping(API_BASE_PATH + "/images") Mono<Void> create(@RequestPart Flux<FilePart> images) { return images .map(image -> { log.info("We will save " + image + " to a Reactive database soon!"); return image; }) .then(); }
@PostMapping(value = BASE_PATH) public Mono<String> createFile( @RequestPart("file") Flux<FilePart> files, @AuthenticationPrincipal Principal principal) { return imageService.createImage(files, principal) .then(Mono.just("redirect:/")); }
@PostMapping(API_BASE_PATH + "/images") Mono<Void> create(@RequestPart Flux<FilePart> images) { Hooks.onOperatorDebug(); return images .map(image -> { log.info("We will save " + image + " to a Reactive database soon!"); return image; }) .then(); }
@Override protected void initParameterAnnotationMgr() { super.initParameterAnnotationMgr(); parameterAnnotationMgr.register(CookieValue.class, new CookieValueAnnotationProcessor()); parameterAnnotationMgr.register(PathVariable.class, new PathVariableAnnotationProcessor()); parameterAnnotationMgr.register(RequestBody.class, new RequestBodyAnnotationProcessor()); parameterAnnotationMgr.register(RequestHeader.class, new RequestHeaderAnnotationProcessor()); parameterAnnotationMgr.register(RequestParam.class, new RequestParamAnnotationProcessor()); parameterAnnotationMgr.register(RequestAttribute.class, new RequestAttributeAnnotationProcessor()); parameterAnnotationMgr.register(RequestPart.class, new RequestPartAnnotationProcessor()); }
@RequestMapping(value = "/{moduleName}/run-script", method = RequestMethod.POST, consumes = "multipart/form-data") public ResponseEntity<?> runScript(@PathVariable String moduleName, @RequestPart("file") MultipartFile file) throws ServiceException, CheckException { String result = moduleService.runScript(moduleName, file); return ResponseEntity.ok(result); }
/** * Deploy a web application * * @return * @throws IOException * @throws ServiceException * @throws CheckException */ @ResponseBody @RequestMapping(value = "/{applicationName}/deploy", method = RequestMethod.POST, consumes = { "multipart/form-data" }) public JsonResponse deploy(@RequestPart("file") MultipartFile fileUpload, @PathVariable String applicationName, HttpServletRequest request, HttpServletResponse response) throws IOException, ServiceException, CheckException { logger.info("applicationName = " + applicationName + "file = " + fileUpload.getOriginalFilename()); User user = authentificationUtils.getAuthentificatedUser(); Application application = applicationService.findByNameAndUser(user, applicationName); // We must be sure there is no running action before starting new one authentificationUtils.canStartNewAction(user, application, Locale.ENGLISH); application = applicationService.deploy(fileUpload, application); String needRestart = dockerService.getEnv(application.getServer().getContainerID(), "CU_SERVER_RESTART_POST_DEPLOYMENT"); if ("true".equalsIgnoreCase(needRestart)){ // set the application in pending mode applicationEventPublisher.publishEvent(new ApplicationPendingEvent(application)); applicationService.stop(application); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } applicationService.start(application); // wait for modules and servers starting applicationEventPublisher.publishEvent(new ApplicationStartEvent(application)); } logger.info("--DEPLOY APPLICATION WAR ENDED--"); return new HttpOk(); }
/** * Upload a file into a container * * @return * @throws IOException * @throws ServiceException * @throws CheckException */ @RequestMapping(value = "/container/{containerId}/application/{applicationName}", method = RequestMethod.POST, consumes = { "multipart/form-data" }) @ResponseBody @ResponseStatus(HttpStatus.OK) public JsonResponse uploadFile(@PathVariable final String applicationName, @RequestPart("file") MultipartFile fileUpload, @PathVariable final String containerId, @RequestParam("path") String path, HttpServletRequest request, HttpServletResponse response) throws IOException, ServiceException, CheckException { if (logger.isDebugEnabled()) { logger.debug("-- CALL UPLOAD FILE TO CONTAINER FS --"); logger.debug("applicationName = " + applicationName); logger.debug("containerId = " + containerId); logger.debug("pathFile = " + path); } User user = authentificationUtils.getAuthentificatedUser(); Application application = applicationService.findByNameAndUser(user, applicationName); // We must be sure there is no running action before starting new one this.authentificationUtils.canStartNewAction(user, application, locale); try { // Application is now pending applicationService.setStatus(application, Status.PENDING); fileService.sendFileToContainer(containerId, path, fileUpload, null, null); } finally { // Application is always set to start applicationService.setStatus(application, Status.START); } return new HttpOk(); }
@Override @PreAuthorize("hasAuthority('hungry')") public ResponseEntity<Void> settingsPicturePost(@ApiParam(value = "file detail") @RequestPart("file") MultipartFile file, @ApiParam(value = "Description of file contents." ) @RequestPart(value="userid", required=false) Integer userid) throws ApiException { // do some magic! settingsService.PicturePost(file); return new ResponseEntity<>(HttpStatus.OK); }
@ApiOperation(value = "Uploads a file.", notes = "", response = Void.class, authorizations = { @Authorization(value = "Bearer") }, tags={ }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Picture set", response = Void.class), @ApiResponse(code = 500, message = "An unexpected error occured.", response = Void.class) }) @RequestMapping(value = "/settings/picture", produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) @CrossOrigin ResponseEntity<Void> settingsPicturePost(@ApiParam(value = "file detail") @RequestPart("file") MultipartFile upfile, @ApiParam(value = "Description of file contents." ) @RequestPart(value="userid", required=false) Integer userid) throws ApiException;
@ApiOperation(value = "Uploads a file.", notes = "", response = Void.class, authorizations = { @Authorization(value = "Bearer") }, tags={ "admin", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Picture set", response = Void.class), @ApiResponse(code = 500, message = "An unexpected error occured.", response = Void.class) }) @RequestMapping(value = "/users/{id}/picture", produces = { "application/json" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST) @CrossOrigin ResponseEntity<Void> usersIdPicturePost(@ApiParam(value = "user id",required=true ) @PathVariable("id") Integer id, @ApiParam(value = "file detail") @RequestPart("file") MultipartFile file)throws ApiException;
@PostMapping("/xm-entities/{idOrKey}/links/targets") @Timed public ResponseEntity<Link> saveLinkTarget(@PathVariable String idOrKey, @RequestPart("link") Link link, @RequestPart(value = "file", required = false) MultipartFile file) { log.debug("REST request to create target for entity {}", idOrKey); Link result = xmEntityService.saveLinkTarget(IdOrKey.of(idOrKey), link, file); return ResponseEntity.ok().body(result); }
@PostMapping("/xm-entities/self/links/targets") @Timed public ResponseEntity<Link> saveSelfLinkTarget(@RequestPart("link") Link link, @RequestPart(value = "file", required = false) MultipartFile file) { log.debug("REST request to create target for self"); Link result = xmEntityService.saveSelfLinkTarget(link, file); return ResponseEntity.ok().body(result); }
@PostMapping("/xm-entities/{idOrKey}/links/targets/{targetId}") @Timed public ResponseEntity<Link> updateLinkTarget(@PathVariable String idOrKey, @PathVariable String targetId, @RequestPart("link") Link link, @RequestPart(value = "file", required = false) MultipartFile file) { log.debug("REST request to update target for entity {}", idOrKey); Link result = xmEntityService.updateLinkTarget(IdOrKey.of(idOrKey), targetId, link, file); return ResponseEntity.ok().body(result); }
@PostMapping("/xm-entities/self/links/targets/{targetId}") @Timed public ResponseEntity<Link> updateSelfLinkTarget(@PathVariable String targetId, @RequestPart("link") Link link, @RequestPart(value = "file", required = false) MultipartFile file) { log.debug("REST request to update target for self"); Link result = xmEntityService.updateSelfLinkTarget(targetId, link, file); return ResponseEntity.ok().body(result); }
@ApiOperation(value = "save docker connection to DB", notes = "", response = Void.class, tags={ "Connections", }) @ApiResponses(value = { @ApiResponse(code = 200, message = "OK", response = Void.class), @ApiResponse(code = 201, message = "successfully created", response = Void.class) }) @RequestMapping(value = "/connections", consumes = {"multipart/form-data"}, method = RequestMethod.POST) ResponseEntity<Void> connectionPost(@ApiParam(value = "", required = true) @RequestPart(value = "name", required = true) String name, @ApiParam(value = "", required = true) @RequestPart(value = "address", required = true) String address, @ApiParam(value = "", required = true) @RequestPart(value = "dockerTLSVerify", required = false) String dockerTLSVerify, @ApiParam(value = "") @RequestPart(value = "dockerConfig", required = false) MultipartFile dockerConfig, @ApiParam(value = "") @RequestPart(value = "file", required = false) MultipartFile upfile);
@PostMapping("/mixed") public @ResponseBody FileInfo uploadMixed(@RequestPart("myJson") String json, @RequestPart("myFile") MultipartFile file) throws Exception { Message message = mapper.readValue(json, Message.class); String text = message.getText(); return upload(file, text); }
/** * Supports the following: * <ul> * <li>@RequestParam-annotated method arguments. * This excludes {@link Map} params where the annotation doesn't * specify a name. See {@link RequestParamMapMethodArgumentResolver} * instead for such params. * <li>Arguments of type {@link MultipartFile} * unless annotated with @{@link RequestPart}. * <li>Arguments of type {@code javax.servlet.http.Part} * unless annotated with @{@link RequestPart}. * <li>In default resolution mode, simple type arguments * even if not with @{@link RequestParam}. * </ul> */ @Override public boolean supportsParameter(MethodParameter parameter) { Class<?> paramType = parameter.getParameterType(); if (parameter.hasParameterAnnotation(RequestParam.class)) { if (Map.class.isAssignableFrom(paramType)) { String paramName = parameter.getParameterAnnotation(RequestParam.class).value(); return StringUtils.hasText(paramName); } else { return true; } } else { if (parameter.hasParameterAnnotation(RequestPart.class)) { return false; } else if (MultipartFile.class.equals(paramType) || "javax.servlet.http.Part".equals(paramType.getName())) { return true; } else if (this.useDefaultResolution) { return BeanUtils.isSimpleProperty(paramType); } else { return false; } } }
/** * Upload zipped cmd log with multipart * * @param cmdId cmd id with text/plain * @param file zipped cmd log with application/zip */ @PostMapping(path = "/log/upload") public void uploadFullLog(@RequestPart String cmdId, @RequestPart MultipartFile file) { if (!Objects.equals(file.getContentType(), "application/zip")) { throw new IllegalParameterException("Illegal zipped log file format"); } cmdService.saveLog(cmdId, file); }
@RequestMapping(value = "/post/multiPart", method = RequestMethod.POST) @ResponseBody public String saveAuto( @RequestPart(value = "json") JsonPojo pojo, @RequestParam(value = "some-random") String random, @RequestParam(value = "data", required = false) List<MultipartFile> files) { System.out.println(random); System.out.println(pojo.getJson()); for (MultipartFile file : files) { System.out.println(file.getOriginalFilename()); } return "success"; }
@RequestMapping(path = "/uploadArray/{folder}", method = POST) public HttpEntity<List<UploadInfo>> uploadArray(@PathVariable String folder, @RequestPart MultipartFile[] files, @RequestPart UploadMetadata metadata) { List<UploadInfo> response = new ArrayList<>(); for (MultipartFile file : files) { response.add(new UploadInfo(i++, file.getSize(), folder + "/" + file.getOriginalFilename())); } return ResponseEntity.ok(response); }
@ResponseStatus(HttpStatus.CREATED) @RequestMapping(value = "/{id:\\d+}/import", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public void importGeojson(@PathVariable long id, @RequestPart("file") MultipartFile file) throws IOException { if (file.isEmpty()) { throw new IllegalArgumentException("Empty upload"); } huntingClubAreaImportFeature.importGeojson(id, toFeatureCollection(file.getInputStream(), file.getOriginalFilename())); }
private String getPartName(MethodParameter methodParam) { RequestPart requestPart = methodParam.getParameterAnnotation(RequestPart.class); String partName = (requestPart != null ? requestPart.name() : ""); if (partName.length() == 0) { partName = methodParam.getParameterName(); if (partName == null) { throw new IllegalArgumentException("Request part name for argument type [" + methodParam.getNestedParameterType().getName() + "] not specified, and parameter name information not found in class file either."); } } return partName; }
@RequestMapping(value = "/test", method = POST, consumes = {"multipart/mixed", "multipart/form-data"}) public ResponseEntity<Object> create(@RequestPart(name = "json-data") TestData testData, @RequestPart("file-data") Optional<MultipartFile> file, @RequestPart(name = "empty-data", required = false) TestData emptyData, @RequestPart(name = "iso-8859-1-data") byte[] iso88591Data) { Assert.assertArrayEquals(new byte[]{(byte) 0xC4}, iso88591Data); String url = "http://localhost:8080/test/" + testData.getName() + "/" + file.get().getOriginalFilename(); HttpHeaders headers = new HttpHeaders(); headers.setLocation(URI.create(url)); return new ResponseEntity<Object>(headers, HttpStatus.CREATED); }
/** * Supports the following: * <ul> * <li>@RequestParam-annotated method arguments. * This excludes {@link Map} params where the annotation doesn't * specify a name. See {@link RequestParamMapMethodArgumentResolver} * instead for such params. * <li>Arguments of type {@link MultipartFile} * unless annotated with @{@link RequestPart}. * <li>Arguments of type {@code javax.servlet.http.Part} * unless annotated with @{@link RequestPart}. * <li>In default resolution mode, simple type arguments * even if not with @{@link RequestParam}. * </ul> */ @Override public boolean supportsParameter(MethodParameter parameter) { Class<?> paramType = parameter.getParameterType(); if (parameter.hasParameterAnnotation(RequestParam.class)) { if (Map.class.isAssignableFrom(paramType)) { String paramName = parameter.getParameterAnnotation(RequestParam.class).name(); return StringUtils.hasText(paramName); } else { return true; } } else { if (parameter.hasParameterAnnotation(RequestPart.class)) { return false; } else if (MultipartFile.class == paramType || "javax.servlet.http.Part".equals(paramType.getName())) { return true; } else if (this.useDefaultResolution) { return BeanUtils.isSimpleProperty(paramType); } else { return false; } } }