如何从传入的POST中提取文件

时间:2018-02-13 13:23:44

标签: python post aiohttp

我有一个奇怪的案例,我有一个附加文件的POST。我使用aiohttp作为服务器。通常我会使用get来检索文件,但在这种情况下这是不可能的。我似乎找不到任何关于使用aiohttp通过http检索文件的文档。

1 个答案:

答案 0 :(得分:1)

简单示例假设您使用了enctype="multipart/form-data"的表单:

async def handle_file_upload(request):
    data = await request.post()
    print('parts:', data.keys())
    # assuming we have a file called foobar
    print('filename:', data['foobar'].filename)
    print('file object:', data['foobar'].file)
    print('file content:', data['foobar'].file.read())
    ...  # (return response etc.)

要小心在野外使用这样的代码而没有保护,因为我相信await request.post()会将所有请求数据读入内存。如果有人curl -X POST --data-binary "@/dev/urandom"...,你将遇到大麻烦。