首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自具有多个映像文件的aiohttp.ClientSession().post()格式错误的请求

来自具有多个映像文件的aiohttp.ClientSession().post()格式错误的请求
EN

Stack Overflow用户
提问于 2020-07-16 01:26:54
回答 1查看 558关注 0票数 1

我对Python还是比较陌生的,也是我第一次使用aiohttp,所以我希望有人能帮我找出问题所在。

我的职能如下:

从JSON有效负载检索两个base64Back

  • decode字符串-- base64Front和base64字符串,保存到“图像”文件夹

  • ,将Front.jpgBack.jpg发送到外部API

  • --外部API需要一个multipart/form-data

代码语言:javascript
复制
imgDataF = base64.b64decode(base64FrontStr)
frontFilename = 'images/Front.jpg'
with open(frontFilename, 'wb') as frontImgFile:
    frontImgFile.write(imgDataF)

imgDataB = base64.b64decode(base64BackStr)
backFilename = 'images/Back.jpg'
with open(backFilename, 'wb') as backImgFile:
    backImgFile.write(imgDataB)

headers = {
    'Content-Type': 'multipart/form-data',
    'AccountAccessKey': 'some-access-key', 
    'SecretToken': 'some-secret-token'
}

url = 'https://external-api/2.0/AuthenticateDoc'
files = [('file', open('./images/Front.jpg', 'rb')), 
         ('file', open('./images/Back.jpg', 'rb'))]

async with aiohttp.ClientSession() as session:
    async with session.post(url, data=files, headers=headers) as resp:
        print(resp.status)
        print(await resp .json())

我得到的响应是状态代码400,下面是:

代码语言:javascript
复制
{'ErrorCode': 1040, 'ErrorMessage': 'Malformed/Invalid Request detected'}

如果我通过邮递员调用url并发送两个jpg文件,我将得到状态代码200。希望有人能帮上忙。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-01-20 05:47:55

尝试使用FormData构造您的请求。从标头中删除内容类型,并在FormData字段中使用它,如下所示:

代码语言:javascript
复制
data = FormData()
data.add_field('file',
               open('Front.jpg', 'rb'),
               filename='Front.jpg',
               content_type='multipart/form-data')

await session.post(url, data=data)

参考资料:https://docs.aiohttp.org/en/stable/client_quickstart.html#post-a-multipart-encoded-file

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62926052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档