我有一个web应用程序,它接受多部分/表单数据,并设置了api网关来传递对它的请求。然而,任何时候我上传图片作为表单的一部分,它们最终都会比我上传的原始文件大,并被损坏。如果我在不通过AWS API网关的情况下执行相同的方法,则图像上传正常。你知道我这里漏掉了什么吗?
下面是我读取flask中的表单数据的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,这是损坏的,如果有用的话。
发布于 2016-12-03 05:11:04
您使用StringIO的目的是什么?f.read()将为您提供字节,而不是字符串。我认为你可以将f直接传递给set_contents_from_file,它将从f读取。
f = request.files['attachment']
file_uuid = str(uuid.uuid4())
bucketkey.key = "att_%s%s" % (file_uuid, file_extension(f.filename))
bucketkey.set_contents_from_file(f)发布于 2016-12-06 01:25:47
您需要为您的数据设置content-type头部,以便API网关将其识别为二进制。
https://stackoverflow.com/questions/40935036
复制相似问题