Атрибут file
Атрибут file класса UploadFile хранит объект
файла, который используется FastAPI для чтения загруженных
данных. Этот объект является асинхронной обёрткой над
стандартным файловым объектом и поддерживает методы
read, write, seek и close.
Атрибут применяется к экземпляру UploadFile,
который приходит в функцию-обработчик при загрузке файла
через форму. Через file можно получить доступ
к низкоуровневому файловому дескриптору.
Синтаксис
upload_file.file
Пример
Давайте создадим обработчик, который принимает файл
и читает его содержимое через атрибут file:
from fastapi import FastAPI, UploadFile
app = FastAPI()
@app.post('/upload/')
async def upload_file(file: UploadFile):
content = await file.file.read()
res = content.decode('utf-8')
return {'text': res}
Результат выполнения кода при отправке файла с текстом
'abcde':
{"text": "abcde"}
Пример
Давайте откроем файл через атрибут file,
прочитаем его и вернём размер данных:
from fastapi import FastAPI, UploadFile
app = FastAPI()
@app.post('/size/')
async def get_size(file: UploadFile):
with file.file as f:
data = f.read()
res = len(data)
return {'size': res}
Результат выполнения кода при отправке файла с текстом
'hello':
{"size": 5}
Пример
Давайте используем атрибут file для доступа
к имени файла через нижележащий дескриптор:
from fastapi import FastAPI, UploadFile
app = FastAPI()
@app.post('/info/')
async def get_info(file: UploadFile):
f = file.file
res = {'name': f.name, 'mode': f.mode}
return res
Результат выполнения кода при отправке файла с именем
'user.txt':
{"name": "user.txt", "mode": "rb"}
Смотрите также
-
класс
UploadFile,
который представляет загруженный файл -
метод
read,
который читает содержимое загруженного файла -
метод
seek,
который перемещает позицию чтения в файле -
атрибут
filename,
который хранит имя загруженного файла