Init code

This commit is contained in:
Viner Abubakirov
2026-02-18 18:08:54 +05:00
parent f2b6ef9ac5
commit 0cf412ea1e
15 changed files with 1181 additions and 0 deletions

44
app/utils/uploader.py Normal file
View File

@@ -0,0 +1,44 @@
from abc import ABC, abstractmethod
class ChunkUploadBackend(ABC):
@abstractmethod
def start(self, filename: str) -> None:
"""Начало загрузки нового файла"""
@abstractmethod
def upload_chunk(self, chunk: bytes) -> None:
"""Загрузка очередного чанка"""
@abstractmethod
def finish(self) -> None:
"""Завершение загрузки"""
@abstractmethod
def abort(self) -> None:
"""Прерывания загрузки"""
class DiskChunkUploadBackend(ChunkUploadBackend):
def __init__(self, base_path: str):
import os
self.os = os
self.base_path = base_path
self.os.makedirs(self.base_path, exist_ok=True)
self._file = None
def start(self, filename):
self._file = open(self.os.path.join(self.base_path, filename), "wb")
def upload_chunk(self, chunk: bytes):
self._file.write(chunk)
def finish(self):
self._file.close()
def abort(self):
if self._file:
self._file.close()
self._file = None