Класс UploadFile
Класс UploadFile используется в FastAPI для работы с файлами,
загруженными через форму. Объект этого класса попадает в обработчик,
когда параметр функции объявлен как UploadFile.
Класс предоставляет асинхронные методы для чтения и записи,
а также атрибуты filename, content_type, file, size и headers.
В отличие от bytes, объект UploadFile хранит файл во временном буфере
и позволяет работать с большими файлами без загрузки их целиком в память.
Синтаксис
from fastapi import UploadFile
async def handler(file: UploadFile):
...
Пример
Давайте создадим обработчик, который принимает файл и возвращает его имя и тип:
from fastapi import FastAPI, UploadFile
app = FastAPI()
@app.post('/upload/')
async def upload(file: UploadFile):
return {
'filename': file.filename,
'content_type': file.content_type
}
Результат выполнения кода при загрузке файла article.txt:
{"filename": "article.txt", "content_type": "text/plain"}
Пример
Давайте прочитаем содержимое загруженного файла с помощью метода read:
from fastapi import FastAPI, UploadFile
app = FastAPI()
@app.post('/read/')
async def read_file(file: UploadFile):
content = await file.read()
return {'content': content.decode('utf-8')}
Результат выполнения кода для файла с текстом 'hello':
{"content": "hello"}
Пример
Давайте сохраним загруженный файл на диск, используя атрибут file и метод write:
from fastapi import FastAPI, UploadFile
app = FastAPI()
@app.post('/save/')
async def save_file(file: UploadFile):
content = await file.read()
with open(f'saved_{file.filename}', 'wb') as f:
f.write(content)
return {'saved': file.filename}
Результат выполнения кода при загрузке файла user.txt:
{"saved": "user.txt"}
Смотрите также
-
класс
UploadFile,
который представляет загруженный файл -
метод
read,
который читает содержимое файла -
метод
write,
который записывает данные в файл -
атрибут
filename,
который хранит имя загруженного файла