How to upload a file as multipart form data to a lambda for processing ?

0

I have an HTTP API in API Gateway that calls to a lambda function to process a file. As of now I have followed below steps to achieve this.

  1. Created a lambda function for file processing.
  2. Created an API proxying the lambda in 1. Since lambda proxy integration is used lambda function receives the file as a base64 encoded string in the event body.
  3. Inside the lambda I decode the body content, apply required processing and send the result back.

I need to know whether there is an easier way to do this without having to decode the file content inside the lambda ? Like in normal JAVA rest application we receive the multipart content as an input stream.

1 個回答
1
已接受的答案

Lambda receives a JSON event object, as such, you must encode binary data before including it in the JSON and passing it to Lambda.

profile pictureAWS
專家
Uri
已回答 1 年前
profile picture
專家
已審閱 7 個月前
  • how can this be done because I am struggling with it. I have this script for API call:

    <script> document.getElementById('upload-form').addEventListener('submit', function(event) { event.preventDefault(); var formData = new FormData(); formData.append('image-file', document.getElementById('image-file').files[0]); formData.append('watermark-text', document.getElementById('watermark-text').value); formData.append('watermark-color', document.getElementById('watermark-color').value); formData.append('watermark-size', document.getElementById('watermark-size').value); var xhr = new XMLHttpRequest(); xhr.open('POST', 'https://564zhl19u2.execute-api.us-east-1.amazonaws.com/watermark'); xhr.onload = function() { if (xhr.status === 200) { var response = JSON.parse(xhr.responseText); document.getElementById('result').innerHTML = response.message; if (response.image_url) { var downloadLink = document.createElement('a'); downloadLink.href = response.image_url; downloadLink.innerHTML = 'Download Watermarked Image'; downloadLink.setAttribute('download', ''); document.getElementById('result').appendChild(downloadLink); } } }; xhr.send(formData);

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南