API网关中的多部分直通

时间:2016-12-02 14:55:32

标签: amazon-web-services file-upload flask multipart aws-api-gateway

我有一个Web应用程序,它接受multipart / form-data并设置了api网关来传递请求。但是,每当我上传图像作为表单的一部分时,它们最终会比我上传和损坏的原始文件大。如果我在不通过AWS API网关的情况下执行相同的方法,则图像上传很好。我在这里缺少什么想法?

以下是我的S3代码,它读取烧瓶中的表格数据:

    f = request.files['attachment']
    fp = StringIO(f.read())
    file_uuid = str(uuid.uuid4())
    bucketkey.key = "att_%s%s" % (file_uuid, file_extension(f.filename))
    bucketkey.set_contents_from_file(fp)

我会附加一个链接到示例jpg,如果它有用的话会被破坏。

https://s3.eu-central-1.amazonaws.com/agendacommunities/att_ef7375b1-bb19-4df9-9162-5582ed66797c.jpeg

2 个答案:

答案 0 :(得分:1)

您对StringIO的意图是什么? f.read()将为您提供字节,而不是字符串。我想你可以直接将f传递给set_contents_from_file,它将从f。

读取
export function saveUser (data, user) {
  let username = data.username
  return ref.child(`users/${user.uid}/info`)
    .set({
      email: user.email,
      firstname: data.firstName,
      lastname: data.lastName,
      admin: false,
      // for /users/<username>
      username: username,
      uid: user.uid
    })
    .then(() => user)
}

答案 1 :(得分:0)

您需要将数据的内容类型标头设置为由API网关识别为二进制。