如何从传入的 POST 中提取文件
How do you extract a file from an incoming POST
我有一个奇怪的情况,我有一个 POST 附带一个文件。我正在使用 aiohttp 作为服务器。通常我会使用 get 来检索文件,但在这种情况下这是不可能的。我似乎找不到任何关于使用 aiohttp 通过 http 检索文件的文档。
一个简单的例子,假设你使用了一个带有 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"...
你就有大麻烦了。
我有一个奇怪的情况,我有一个 POST 附带一个文件。我正在使用 aiohttp 作为服务器。通常我会使用 get 来检索文件,但在这种情况下这是不可能的。我似乎找不到任何关于使用 aiohttp 通过 http 检索文件的文档。
一个简单的例子,假设你使用了一个带有 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"...
你就有大麻烦了。