[ https://issues.apache.org/jira/browse/NIFI-3469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16604544#comment-16604544 ]
ASF GitHub Bot commented on NIFI-3469: -------------------------------------- GitHub user ekovacs opened a pull request: https://github.com/apache/nifi/pull/2991 NIFI-3469: multipart request support added to HandleHttpRequest Thank you for submitting a contribution to Apache NiFi. In order to streamline the review of the contribution we ask you to ensure the following steps have been taken: ### For all changes: - [x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message? - [x] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character. - [x] Has your PR been rebased against the latest commit within the target branch (typically master)? - [x] Is your initial contribution a single, squashed commit? ### For code changes: - [ ] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder? - [x] Have you written or updated unit tests to verify your changes? - [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)? - [ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly? - [ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly? - [ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties? ### For documentation related changes: - [ ] Have you ensured that format looks appropriate for the output in which it is rendered? ### Note: Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible. You can merge this pull request into a Git repository by running: $ git pull https://github.com/ekovacs/nifi NIFI-3469 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/nifi/pull/2991.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #2991 ---- commit 4910b5cbe73b7b93610abfbf0ac3ddc02b2943bf Author: Endre Zoltan Kovacs <andrewsmith87@...> Date: 2018-09-04T14:35:37Z NIFI-3469 multipart request support added to HandleHttpRequest ---- > Add multipart request support to HandleHttpRequest Processor > ------------------------------------------------------------ > > Key: NIFI-3469 > URL: https://issues.apache.org/jira/browse/NIFI-3469 > Project: Apache NiFi > Issue Type: Improvement > Components: Extensions > Reporter: Koji Kawamura > Assignee: Endre Kovacs > Priority: Major > > Currently, HandleHttpRequest outputs a single FlowFile containing all > multipart values as following: > {code} > --------------------------ef07e8bf36c274d3 > Content-Disposition: form-data; name="p1" > v1 > --------------------------ef07e8bf36c274d3 > Content-Disposition: form-data; name="p2" > v2 > --------------------------ef07e8bf36c274d3-- > {code} > Many users requested adding upload files support to NiFi. > In order for HandleHttpRequest to support multipart data we need to add > followings (this is based on a brief researching and can be more complex or > simple): > We need to use HttpServletRequest#getParts() as written in this stackoverflow > thread: > http://stackoverflow.com/questions/3337056/convenient-way-to-parse-incoming-multipart-form-data-parameters-in-a-servlet > Also, we probably need a custom MultiPartInputStreamParser implementation. > Because Jetty's default implementation writes input data to temporary > directory on file system, instead, we'd like NiFi to write those into output > FlowFiles content in streaming fashion. > And we need request size validation checks, threshold for those validation > should be passed via javax.servlet.MultipartConfigElement. > Finally, we have to do something with HandleHttpResponse processor. > Once HandleHttpRequest processor start splitting incoming request into > multiple output FlowFiles, we need to wait for every fragment to be > processed, then execute HandleHttpRequest. > I think Wait/Notify processors (available from next version) will be helpful > here. -- This message was sent by Atlassian JIRA (v7.6.3#76005)