Andrew Wei
Andrew Wei

Reputation: 2080

AWS Api Gateway as a HTTP Proxy is currupting binary uploaded image files

I have a ruby on rails app that takes an image file, "attaches it to a member", and uploads it to s3. When I use insomnia and POST directly to the app ... it works, however when I use the exact same endpoint behind AWS Api Gateway, the image is corrupt and not viewable.


Here is the comparison of the requests.

https://www.diffchecker.com/wwUmpB5W

Something I noticed, is that the paperclip gem is running different commands. It's evident that paperclip realized that the file is not an image when being passed through API gateway.


Here are some potentially relevant screenshots

method execution integration request api gateway settings


Here is the rails code:

def create
  logger.info 'upload_attachment_api_general_v1'
  logger.info params
  logger.info request.env
  @file = current_merchant.members.find(params[:member_id]).attachments.new(file: params[:file], label: params[:label])
  if params[:file] && @file.save
    render json: @file
  else
    render json: @file.errors, status: :unprocessable_entity
  end
end

Upvotes: 6

Views: 5373

Answers (1)

Andrew Wei
Andrew Wei

Reputation: 2080

I figured it out. The content type is NOT an image/png ... the content type is multipart/form-data

multipart

Upvotes: 15

Related Questions