AWS Api Gateway 作为 HTTP 代理正在破坏二进制上传的图像文件

And*_*Wei 6 paperclip amazon-web-services aws-api-gateway api-gateway

我有一个 ruby​​ on rails 应用程序,它接收一个图像文件,“将它附加到一个成员”,然后将它上传到 s3。当我使用 insomnia 和 POST 直接到应用程序时......它可以工作,但是当我在 AWS Api Gateway 后面使用完全相同的端点时,图像已损坏且无法查看。


这是请求的比较。

  • LEFT = 直接发布到 rails 应用程序
  • RIGHT = 通过 api 网关

https://www.diffchecker.com/wwUmpB5W

我注意到的是,回形针 gem 正在运行不同的命令。很明显,回形针在通过 API 网关时意识到文件不是图像。


以下是一些可能相关的屏幕截图

方法执行 整合请求 api网关设置


这是导轨代码:

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
Run Code Online (Sandbox Code Playgroud)

And*_*Wei 13

我想到了。内容类型不是image/png... 内容类型是multipart/form-data

多部分

  • 需要注意的是,在进行设置调整后,您仍然需要再次部署 api。这对其他人来说可能是显而易见的,但对我来说却并非如此。 (3认同)