Koji Kawamura created NIFI-3469:
-----------------------------------

             Summary: Add multipart request support to HandleHttpRequest 
Procesor
                 Key: NIFI-3469
                 URL: https://issues.apache.org/jira/browse/NIFI-3469
             Project: Apache NiFi
          Issue Type: Improvement
          Components: Extensions
            Reporter: Koji Kawamura


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
(v6.3.15#6346)

Reply via email to