@Override public List<FormDataBodyPart> apply(ContainerRequest request) { return getEntity(request).getFields(name); } }
@Override public List<FormDataContentDisposition> apply(ContainerRequest request) { final List<FormDataBodyPart> parts = getEntity(request).getFields(name); return parts == null ? null : parts.stream() .map(FormDataBodyPart::getFormDataContentDisposition) .collect(Collectors.toList()); } }
private File getFileFromMultipart(FormDataMultiPart multiPart, File dstFile) throws IOException { // Read segment file or segment metadata file and directly use that information to update zk Map<String, List<FormDataBodyPart>> segmentMetadataMap = multiPart.getFields(); if (!validateMultiPart(segmentMetadataMap, null)) { throw new ControllerApplicationException(LOGGER, "Invalid multi-part form for segment metadata", Response.Status.BAD_REQUEST); } FormDataBodyPart segmentMetadataBodyPart = segmentMetadataMap.values().iterator().next().get(0); try (InputStream inputStream = segmentMetadataBodyPart.getValueAs(InputStream.class); OutputStream outputStream = new FileOutputStream(dstFile)) { IOUtils.copyLarge(inputStream, outputStream); } finally { multiPart.cleanup(); } return dstFile; }
@POST @Path("files") @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadMultipart(FormDataMultiPart multiPart) throws IOException{ List<FormDataBodyPart> fields = multiPart.getFields("test"); for(FormDataBodyPart field : fields){ handleInputStream(field.getValueAs(InputStream.class)); } //prepare the response } private void handleInputStream(InputStream is){ //read the stream any way you want }
private Schema getSchemaFromMultiPart(FormDataMultiPart multiPart) { try { Map<String, List<FormDataBodyPart>> map = multiPart.getFields(); if (!PinotSegmentUploadRestletResource.validateMultiPart(map, null)) { throw new ControllerApplicationException(LOGGER, "Found not exactly one file from the multi-part fields", Response.Status.BAD_REQUEST); } FormDataBodyPart bodyPart = map.values().iterator().next().get(0); try (InputStream inputStream = bodyPart.getValueAs(InputStream.class)) { return Schema.fromInputSteam(inputStream); } catch (IOException e) { throw new ControllerApplicationException(LOGGER, "Caught exception while de-serializing the schema from request body: " + e.getMessage(), Response.Status.BAD_REQUEST); } } finally { multiPart.cleanup(); } }
boolean isSplitCommit) { try { Map<String, List<FormDataBodyPart>> map = multiPart.getFields(); if (!PinotSegmentUploadRestletResource.validateMultiPart(map, segmentName)) { return null;
@POST @Consumes(MediaType.MULTIPART_FORM_DATA) @Produces(MediaType.APPLICATION_JSON) @Path("/multipleFiles") public String restDemo(FormDataMultiPart formParams) { formParams.getFields(); }
@Override public Object apply(ContainerRequest request) { final List<FormDataBodyPart> parts = getEntity(request).getFields(parameter.getSourceName());
@Override public List<FormDataBodyPart> provide() { return getEntity().getFields(name); } }
@Override public List<FormDataBodyPart> apply(ContainerRequest request) { return getEntity(request).getFields(name); } }
@Override public List<FormDataContentDisposition> apply(ContainerRequest request) { final List<FormDataBodyPart> parts = getEntity(request).getFields(name); return parts == null ? null : parts.stream() .map(FormDataBodyPart::getFormDataContentDisposition) .collect(Collectors.toList()); } }
@Override public List<String> getValues(String param) { List<FormDataBodyPart> bodyParts = form.getFields(param); if (bodyParts == null) return Collections.emptyList(); List<String> values = new ArrayList<>(bodyParts.size()); for (FormDataBodyPart bodyPart : bodyParts) values.add(bodyPart.getValue()); return values; }
@Override public List<FormDataBodyPart> provide() { return getEntity().getFields(name); } }
@Override public List<FormDataBodyPart> provide() { return getEntity().getFields(name); } }
@POST @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadAsset(FormDataMultiPart multipart) { Map<String, List<FormDataBodyPart>> map = multipart.getFields(); for (Map.Entry<String, List<FormDataBodyPart>> entry : map.entrySet()) { for (FormDataBodyPart part : entry.getValue()) { InputStream in = part.getEntityAs(InputStream.class); String name = part.getName(); System.out.println("--- name: " + name); } } return Response.ok("cool upload").build(); }
@Override public List<FormDataContentDisposition> provide() { final List<FormDataBodyPart> parts = getEntity().getFields(name); return parts == null ? null : Lists.transform(parts, new Function<FormDataBodyPart, FormDataContentDisposition>() { @Override public FormDataContentDisposition apply(final FormDataBodyPart part) { return part.getFormDataContentDisposition(); } }); } }
@Override public List<FormDataContentDisposition> provide() { final List<FormDataBodyPart> parts = getEntity().getFields(name); return parts == null ? null : Lists.transform(parts, new Function<FormDataBodyPart, FormDataContentDisposition>() { @Override public FormDataContentDisposition apply(final FormDataBodyPart part) { return part.getFormDataContentDisposition(); } }); } }
@Override public List<FormDataContentDisposition> provide() { final List<FormDataBodyPart> parts = getEntity().getFields(name); return parts == null ? null : Lists.transform(parts, new Function<FormDataBodyPart, FormDataContentDisposition>() { @Override public FormDataContentDisposition apply(final FormDataBodyPart part) { return part.getFormDataContentDisposition(); } }); } }
@POST @Consumes(MediaType.MULTIPART_FORM_DATA) public void upload(FormDataMultiPart formParams) { Map<String, List<FormDataBodyPart>> fieldsByName = formParams.getFields(); // Usually each value in fieldsByName will be a list of length 1. // Assuming each field in the form is a file, just loop through them. for (List<FormDataBodyPart> fields : fieldsByName.values()) { for (FormDataBodyPart field : fields) { InputStream is = field.getEntityAs(InputStream.class); String fileName = field.getName(); // TODO: SAVE FILE HERE // if you want media type for validation, it's field.getMediaType() } } }
private MultiPart computeMultiPart( Method method, Object[] parameter ) { FormDataMultiPart result = new FormDataMultiPart(); Annotation[][] parameterAnnotations = method.getParameterAnnotations(); for( int i = 0; i < parameterAnnotations.length; i++ ) { Annotation[] annotations = parameterAnnotations[ i ]; FormDataParam param = extractAnnotation( annotations, FormDataParam.class ); if( param != null ) { result.field( param.value(), parameter[ i ], determinePartContentType( parameter[ i ] ) ); } } return result.getFields().isEmpty() ? null : result; }