Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
915 views
in Technique[技术] by (71.8m points)

amazon web services - 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.

  • LEFT = directly posted to the rails app
  • RIGHT = through api gateway

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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

multipart


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...