Parse multipart/form-data json body of lambda in Java












0














I am trying to implement a Lambda function that receives a POST request containing data encoded as multipart/form-data. The message is received through the API Gateway using Lambda Proxy integration and the body is encoded in Base64 when it arrives to the Lambda function. After decoding it manually, I see it contains a multipart body like the following:



-----WebKitFormBoundary3EZ0C3tbP2JpAmz4
Content-Disposition: form-data; name="param1"

value1
-----WebKitFormBoundary3EZ0C3tbP2JpAmz4
Content-Disposition: form-data; name="param2"

value2
------WebKitFormBoundary3EZ0C3tbP2JpAmz4
Content-Disposition: form-data; name="myfile"; filename="ivr.png"
Content-Type: image/png

PNG
... [binary stuff]
------WebKitFormBoundary3EZ0C3tbP2JpAmz4--


What I need is to parse this message in java 8.
so that I can access the individual parts like



1. form data 
2 file content


I have tried fileupload, Apache Multipart those didn't workout



Any sols will be helpful.










share|improve this question





























    0














    I am trying to implement a Lambda function that receives a POST request containing data encoded as multipart/form-data. The message is received through the API Gateway using Lambda Proxy integration and the body is encoded in Base64 when it arrives to the Lambda function. After decoding it manually, I see it contains a multipart body like the following:



    -----WebKitFormBoundary3EZ0C3tbP2JpAmz4
    Content-Disposition: form-data; name="param1"

    value1
    -----WebKitFormBoundary3EZ0C3tbP2JpAmz4
    Content-Disposition: form-data; name="param2"

    value2
    ------WebKitFormBoundary3EZ0C3tbP2JpAmz4
    Content-Disposition: form-data; name="myfile"; filename="ivr.png"
    Content-Type: image/png

    PNG
    ... [binary stuff]
    ------WebKitFormBoundary3EZ0C3tbP2JpAmz4--


    What I need is to parse this message in java 8.
    so that I can access the individual parts like



    1. form data 
    2 file content


    I have tried fileupload, Apache Multipart those didn't workout



    Any sols will be helpful.










    share|improve this question



























      0












      0








      0







      I am trying to implement a Lambda function that receives a POST request containing data encoded as multipart/form-data. The message is received through the API Gateway using Lambda Proxy integration and the body is encoded in Base64 when it arrives to the Lambda function. After decoding it manually, I see it contains a multipart body like the following:



      -----WebKitFormBoundary3EZ0C3tbP2JpAmz4
      Content-Disposition: form-data; name="param1"

      value1
      -----WebKitFormBoundary3EZ0C3tbP2JpAmz4
      Content-Disposition: form-data; name="param2"

      value2
      ------WebKitFormBoundary3EZ0C3tbP2JpAmz4
      Content-Disposition: form-data; name="myfile"; filename="ivr.png"
      Content-Type: image/png

      PNG
      ... [binary stuff]
      ------WebKitFormBoundary3EZ0C3tbP2JpAmz4--


      What I need is to parse this message in java 8.
      so that I can access the individual parts like



      1. form data 
      2 file content


      I have tried fileupload, Apache Multipart those didn't workout



      Any sols will be helpful.










      share|improve this question















      I am trying to implement a Lambda function that receives a POST request containing data encoded as multipart/form-data. The message is received through the API Gateway using Lambda Proxy integration and the body is encoded in Base64 when it arrives to the Lambda function. After decoding it manually, I see it contains a multipart body like the following:



      -----WebKitFormBoundary3EZ0C3tbP2JpAmz4
      Content-Disposition: form-data; name="param1"

      value1
      -----WebKitFormBoundary3EZ0C3tbP2JpAmz4
      Content-Disposition: form-data; name="param2"

      value2
      ------WebKitFormBoundary3EZ0C3tbP2JpAmz4
      Content-Disposition: form-data; name="myfile"; filename="ivr.png"
      Content-Type: image/png

      PNG
      ... [binary stuff]
      ------WebKitFormBoundary3EZ0C3tbP2JpAmz4--


      What I need is to parse this message in java 8.
      so that I can access the individual parts like



      1. form data 
      2 file content


      I have tried fileupload, Apache Multipart those didn't workout



      Any sols will be helpful.







      amazon-web-services java-8 aws-lambda aws-api-gateway






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 23 '18 at 9:05









      John Rotenstein

      68k775119




      68k775119










      asked Nov 23 '18 at 8:35









      Ak S

      515




      515
























          1 Answer
          1






          active

          oldest

          votes


















          0














          I ran into a similar issue with my application. I used and modified a custom form-data parser here: https://apimeister.com/2015/10/10/formdatahandler-implements-com-sun-net-httpserver-httphandler.html



          I got it to parse properly however, the binary data came in malformed similar to this issue here: https://github.com/dherault/serverless-offline/issues/230



          How did you get the entire AWS Lambda body to encode to base64? Can you post instructions to do so? That may fix the malformed data issue I am running into.






          share|improve this answer





















          • i have specified as multipart/form-data in mapping template at Lambda Proxy integration Request in API Gateway, It directly convert your body data to base64 format.
            – Ak S
            Dec 5 '18 at 9:06












          • Ah nice, I'll look into it. Let me know if you need help implementing that form-data parser. It pretty much depends on how you setup your RequestHandler for your Lambda function, you can modify it pretty easily to get it to work. I'll let you know what I come up with base64 the entire body.
            – Nick
            Dec 5 '18 at 19:51










          • thats great. Let me know once your are done with changes.... thanks
            – Ak S
            Dec 6 '18 at 8:04











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53443125%2fparse-multipart-form-data-json-body-of-lambda-in-java%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          I ran into a similar issue with my application. I used and modified a custom form-data parser here: https://apimeister.com/2015/10/10/formdatahandler-implements-com-sun-net-httpserver-httphandler.html



          I got it to parse properly however, the binary data came in malformed similar to this issue here: https://github.com/dherault/serverless-offline/issues/230



          How did you get the entire AWS Lambda body to encode to base64? Can you post instructions to do so? That may fix the malformed data issue I am running into.






          share|improve this answer





















          • i have specified as multipart/form-data in mapping template at Lambda Proxy integration Request in API Gateway, It directly convert your body data to base64 format.
            – Ak S
            Dec 5 '18 at 9:06












          • Ah nice, I'll look into it. Let me know if you need help implementing that form-data parser. It pretty much depends on how you setup your RequestHandler for your Lambda function, you can modify it pretty easily to get it to work. I'll let you know what I come up with base64 the entire body.
            – Nick
            Dec 5 '18 at 19:51










          • thats great. Let me know once your are done with changes.... thanks
            – Ak S
            Dec 6 '18 at 8:04
















          0














          I ran into a similar issue with my application. I used and modified a custom form-data parser here: https://apimeister.com/2015/10/10/formdatahandler-implements-com-sun-net-httpserver-httphandler.html



          I got it to parse properly however, the binary data came in malformed similar to this issue here: https://github.com/dherault/serverless-offline/issues/230



          How did you get the entire AWS Lambda body to encode to base64? Can you post instructions to do so? That may fix the malformed data issue I am running into.






          share|improve this answer





















          • i have specified as multipart/form-data in mapping template at Lambda Proxy integration Request in API Gateway, It directly convert your body data to base64 format.
            – Ak S
            Dec 5 '18 at 9:06












          • Ah nice, I'll look into it. Let me know if you need help implementing that form-data parser. It pretty much depends on how you setup your RequestHandler for your Lambda function, you can modify it pretty easily to get it to work. I'll let you know what I come up with base64 the entire body.
            – Nick
            Dec 5 '18 at 19:51










          • thats great. Let me know once your are done with changes.... thanks
            – Ak S
            Dec 6 '18 at 8:04














          0












          0








          0






          I ran into a similar issue with my application. I used and modified a custom form-data parser here: https://apimeister.com/2015/10/10/formdatahandler-implements-com-sun-net-httpserver-httphandler.html



          I got it to parse properly however, the binary data came in malformed similar to this issue here: https://github.com/dherault/serverless-offline/issues/230



          How did you get the entire AWS Lambda body to encode to base64? Can you post instructions to do so? That may fix the malformed data issue I am running into.






          share|improve this answer












          I ran into a similar issue with my application. I used and modified a custom form-data parser here: https://apimeister.com/2015/10/10/formdatahandler-implements-com-sun-net-httpserver-httphandler.html



          I got it to parse properly however, the binary data came in malformed similar to this issue here: https://github.com/dherault/serverless-offline/issues/230



          How did you get the entire AWS Lambda body to encode to base64? Can you post instructions to do so? That may fix the malformed data issue I am running into.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Dec 4 '18 at 22:30









          Nick

          462




          462












          • i have specified as multipart/form-data in mapping template at Lambda Proxy integration Request in API Gateway, It directly convert your body data to base64 format.
            – Ak S
            Dec 5 '18 at 9:06












          • Ah nice, I'll look into it. Let me know if you need help implementing that form-data parser. It pretty much depends on how you setup your RequestHandler for your Lambda function, you can modify it pretty easily to get it to work. I'll let you know what I come up with base64 the entire body.
            – Nick
            Dec 5 '18 at 19:51










          • thats great. Let me know once your are done with changes.... thanks
            – Ak S
            Dec 6 '18 at 8:04


















          • i have specified as multipart/form-data in mapping template at Lambda Proxy integration Request in API Gateway, It directly convert your body data to base64 format.
            – Ak S
            Dec 5 '18 at 9:06












          • Ah nice, I'll look into it. Let me know if you need help implementing that form-data parser. It pretty much depends on how you setup your RequestHandler for your Lambda function, you can modify it pretty easily to get it to work. I'll let you know what I come up with base64 the entire body.
            – Nick
            Dec 5 '18 at 19:51










          • thats great. Let me know once your are done with changes.... thanks
            – Ak S
            Dec 6 '18 at 8:04
















          i have specified as multipart/form-data in mapping template at Lambda Proxy integration Request in API Gateway, It directly convert your body data to base64 format.
          – Ak S
          Dec 5 '18 at 9:06






          i have specified as multipart/form-data in mapping template at Lambda Proxy integration Request in API Gateway, It directly convert your body data to base64 format.
          – Ak S
          Dec 5 '18 at 9:06














          Ah nice, I'll look into it. Let me know if you need help implementing that form-data parser. It pretty much depends on how you setup your RequestHandler for your Lambda function, you can modify it pretty easily to get it to work. I'll let you know what I come up with base64 the entire body.
          – Nick
          Dec 5 '18 at 19:51




          Ah nice, I'll look into it. Let me know if you need help implementing that form-data parser. It pretty much depends on how you setup your RequestHandler for your Lambda function, you can modify it pretty easily to get it to work. I'll let you know what I come up with base64 the entire body.
          – Nick
          Dec 5 '18 at 19:51












          thats great. Let me know once your are done with changes.... thanks
          – Ak S
          Dec 6 '18 at 8:04




          thats great. Let me know once your are done with changes.... thanks
          – Ak S
          Dec 6 '18 at 8:04


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53443125%2fparse-multipart-form-data-json-body-of-lambda-in-java%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          What visual should I use to simply compare current year value vs last year in Power BI desktop

          How to ignore python UserWarning in pytest?

          Alexandru Averescu