получать только загруженные файлы в aiohttp - PullRequest
0 голосов
/ 09 апреля 2020

Как мы можем получить только загруженные файлы из объекта Запрос ?

Пример: Мы можем получить тело JSON из запроса с помощью json() сопрограмма,

json_body = await request.json()

Аналогично, можно ли загрузить загруженные файлы без проверки сопрограммы .post()?

Примечание: Я нашел такие же / похожие реализации в других платформах
1. Django - request.FILES
2. Flask - request.files

1 Ответ

0 голосов
/ 09 апреля 2020

Обходной путь

Я создал декоратор , который анализирует файлы из request.post() и затем назначает .files атрибут

from aiohttp import web
from aiohttp.web_request import FileField


<b>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</b>


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