只在aiohttp中检索上传的文件



如何从Request对象中只检索上传的文件?

示例:我们可以在json()协程、的帮助下从请求中检索JSON主体

json_body = await request.json()

同样,我可以在不检查.post()协同程序的情况下上传文件吗?

注意:我在其他框架中发现了相同/相似的实现
1。Django-request.FILES
2。烧瓶-request.files

解决方法

我创建了一个decorator函数,该函数解析request.post()中的文件,然后分配给.files属性

from aiohttp import web
from aiohttp.web_request import FileField

def set_files(function):
async def wrapper(*args):
try:
request = args[1]  # class based handler
except IndexError:
request = args[0]  # function based handler
files = {}
form_data = await request.post()
for field_name, field_value in form_data.items():
if isinstance(field_value, FileField):
files[field_name] = field_value
request.files = files
return await function(*args)
return wrapper

@set_files
async def index(request):
files = request.files
return web.Response(text='Hello Aiohttp!')

最新更新