Parse multipart/form-data json body of lambda in Java
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
add a comment |
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
add a comment |
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
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
amazon-web-services java-8 aws-lambda aws-api-gateway
edited Nov 23 '18 at 9:05
John Rotenstein
68k775119
68k775119
asked Nov 23 '18 at 8:35
Ak S
515
515
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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.
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
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
add a comment |
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.
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
add a comment |
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.
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.
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
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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