@Override public List<String> paramNames() { ImmutableList.Builder<String> builder = ImmutableList.builder(); builder.addAll(exchange.getQueryParameters().keySet()); FormData formdata = parseForm(); formdata.forEach(v -> { // excludes upload from param names. if (!formdata.getFirst(v).isFile()) { builder.add(v); } }); return builder.build(); }
@Override public List<String> params(final String name) { Builder<String> builder = ImmutableList.builder(); // query params Deque<String> query = exchange.getQueryParameters().get(name); if (query != null) { query.forEach(builder::add); } // form params Optional.ofNullable(parseForm().get(name)).ifPresent(values -> values.forEach(value -> { if (!value.isFile()) { builder.add(value.getValue()); } })); return builder.build(); }
@Override public List<NativeUpload> files(final String name) { Builder<NativeUpload> builder = ImmutableList.builder(); Deque<FormValue> values = parseForm().get(name); if (values != null) { values.forEach(value -> { if (value.isFile()) { builder.add(new UndertowUpload(value)); } }); } return builder.build(); }
if (contents != null && !contents.isEmpty()) { for (final FormData.FormValue value : contents) { if (value.isFile()) { builder.addFileAsAttachment(value.getPath().toFile());
if (value.isFile()) { ModelNode response = null; InputStream in = new BufferedInputStream(new FileInputStream(value.getPath().toFile()));
/** * Populates the given {@link Map} of {@link FileItem}s with all file uploads from the given form. * * @param fileItemMap * @param name * @param formValues */ public static void populateFileItemMap(Map<String, List<FileItem>> fileItemMap, String name, Deque<FormValue> formValues) { List<FileItem> fileItemList = null; if ( fileItemMap.containsKey(name) ) { fileItemList = fileItemMap.get(name); } else { fileItemList = new ArrayList<FileItem>(); fileItemMap.put(name, fileItemList); } for (FormData.FormValue formValue : formValues) { // make sure to skip all non-file upload fields if (!formValue.isFile()) { continue; } // we have a file upload FileItem fileItem = getFileItemFromFormValue( formValue ); fileItemList.add(fileItem); } }
@Override public String getFirstParam(String param) { Deque<String> values = exchange.getQueryParameters().get(param); if (values != null && !values.isEmpty()) { return values.getFirst(); } if (formData == null && "post".equalsIgnoreCase(getMethod())) { FormDataParser parser = formParserFactory.createParser(exchange); try { formData = parser.parseBlocking(); } catch (IOException cause) { throw new RuntimeException("Failed to parse form parameters", cause); } } if (formData != null) { Deque<FormValue> formValues = formData.get(param); if (formValues != null && !formValues.isEmpty()) { FormValue firstValue = formValues.getFirst(); if (!firstValue.isFile()) { return firstValue.getValue(); } } } return null; }
@Override public String getFirstParam(String param) { Deque<String> values = exchange.getQueryParameters().get(param); if (values != null && !values.isEmpty()) { return values.getFirst(); } if (formData == null && "post".equalsIgnoreCase(getMethod())) { FormDataParser parser = formParserFactory.createParser(exchange); try { formData = parser.parseBlocking(); } catch (IOException cause) { throw new RuntimeException("Failed to parse form parameters", cause); } } if (formData != null) { Deque<FormValue> formValues = formData.get(param); if (formValues != null && !formValues.isEmpty()) { FormValue firstValue = formValues.getFirst(); if (!firstValue.isFile()) { return firstValue.getValue(); } } } return null; }
static public void createOrMerge(Map<String, String[]> parameters, String name, Deque<FormData.FormValue> formValues) { String[] current = parameters.get(name); int index = 0; int size = formValues.size(); // prepare for merge or allocate new if (current != null) { index = current.length; size += current.length; String[] future = new String[size]; System.arraycopy(current, 0, future, 0, current.length); current = future; } else { current = new String[size]; } // copy values! for (FormData.FormValue formValue : formValues) { // make sure to skip all file uploads. if (formValue.isFile()) { continue; } // standard form parameter current[index] = formValue.getValue(); index++; } parameters.put(name, current); }
formData.forEach(key -> { formData.get(key).forEach(value -> { if (value.isFile()) { DefaultAttachment attachment = new DefaultAttachment(new FilePartDataSource(value)); result.addAttachmentObject(key, attachment);
/** * Gets a single (the first) {@link ParameterFileItem} from the given {@link FormValue}s. * * @param formName * @param formValues * @return */ public static ParameterFileItem getFileItem(String formName, Deque<FormValue> formValues) { for (FormData.FormValue formValue : formValues) { // make sure to skip all non-file upload fields if (!formValue.isFile()) { continue; } // we have a (first) file upload. create and return return getFileItemFromFormValue(formValue); } return null; }
Part(FormData.FormValue formValue, String name) { valid = formValue != null; if (!valid) { return; } this.name = name; HeaderMap headers = formValue.getHeaders(); contentType = getMediaType(headers); isFile = formValue.isFile(); if (isFile) { Path path = formValue.getPath(); String fileName = formValue.getFileName(); long size = getSize(path); partFile = new PartFile(path, fileName, size, contentType); } else { value = formValue.getValue(); } }
Part(FormData.FormValue formValue, String name) { valid = formValue != null; if (!valid) { return; } this.name = name; HeaderMap headers = formValue.getHeaders(); contentType = getMediaType(headers); isFile = formValue.isFile(); if (isFile) { Path path = formValue.getPath(); String fileName = formValue.getFileName(); long size = getSize(path); partFile = new PartFile(path, fileName, size, contentType); } else { value = formValue.getValue(); } }
@Override public List<String> params(final String name) { Builder<String> builder = ImmutableList.builder(); // query params Deque<String> query = exchange.getQueryParameters().get(name); if (query != null) { query.forEach(builder::add); } // form params Optional.ofNullable(parseForm().get(name)).ifPresent(values -> values.forEach(value -> { if (!value.isFile()) { builder.add(value.getValue()); } })); return builder.build(); }
/** * Populate the given {@link List} of {@link FileItem}s with file uploads with the given parameter name. * @param fileItemList * @param name * @param formValues */ public static void populateFileItemList(List<FileItem> fileItemList, String name, Deque<FormValue> formValues) { for (FormData.FormValue formValue : formValues) { // make sure to skip all non-file upload fields if (!formValue.isFile()) { continue; } // we have a file upload fileItemList.add( getFileItemFromFormValue(formValue)); } }
private void getForm(HttpServerExchange exchange) throws IOException { this.form = this.injector.getInstance(Form.class); if (exchange.getRequestMethod().equals(Methods.POST) || exchange.getRequestMethod().equals(Methods.PUT)) { final FormDataParser formDataParser = FormParserFactory.builder().build().createParser(exchange); if (formDataParser != null) { exchange.startBlocking(); FormData formData = formDataParser.parseBlocking(); for (String data : formData) { for (FormData.FormValue formValue : formData.get(data)) { if (formValue.isFile()) { form.addFile(formValue.getFile()); } else { form.add(new HttpString(data).toString(), formValue.getValue()); } } } this.form.setSubmitted(true); } } }
Builder builder = FormParserFactory.builder(); final FormDataParser formDataParser = builder.build().createParser(exchange); if (formDataParser != null) { exchange.startBlocking(); FormData formData = formDataParser.parseBlocking(); for (String data : formData) { for (FormData.FormValue formValue : formData.get(data)) { if (formValue.isFile()) { // process file here: formValue.getFile(); } } } }
@Override public List<String> paramNames() { ImmutableList.Builder<String> builder = ImmutableList.builder(); builder.addAll(exchange.getQueryParameters().keySet()); FormData formdata = parseForm(); formdata.forEach(v -> { // excludes upload from param names. if (!formdata.getFirst(v).isFile()) { builder.add(v); } }); return builder.build(); }
@Override public List<NativeUpload> files(final String name) { Builder<NativeUpload> builder = ImmutableList.builder(); Deque<FormValue> values = parseForm().get(name); if (values != null) { values.forEach(value -> { if (value.isFile()) { builder.add(new UndertowUpload(value)); } }); } return builder.build(); }
private InputStream convertToStream(FormData.FormValue op) throws IOException { if (op.isFile()) { return Files.newInputStream(op.getPath()); } else { return new ByteArrayInputStream(op.getValue().getBytes(StandardCharsets.UTF_8)); } }