Библиотека для валидации файлов
Project description
File Validator
Библиотека для валидации файлов
Библиотека предоставляет упрощенный интерфейс для валидации файлов.
Основные возможности:
- Валидация по размеру
- Валидация по расширению
- Валидация по Mime типу
Установка:
pip install universal-file-validator
После установки валидатора файлов необходимо установить libmagic, для чего вам нужно выполнить следующую команду:
- Windows:
pip install python-magic-bin
- Debian/Ubuntu:
sudo apt-get install libmagic1
- MacOS:
brew install libmagic
Использование:
Перед началом нужно создать экземпляр класса:
Словарь image_types можно не передавать только для валидации по размеру, для всех остальных валидаций он необходим.
image_types = {
'image/jpeg': ['jpg', 'jpeg'],
'image/jpg': ['jpg', 'jpeg'],
'image/png': ['png'],
}
vc = FileValidator(
max_size=1000,
size_unit='килобайт',
allowed_types=image_types,
is_validate_extension=True,
is_validate_mime_type=True,
is_cross_validation=True,
)
Подробнее об аргументах:
max_size (int): Максимальный размер файла в указанных единицах измерения. При значении 0 валидация размера отключена. По умолчанию 0.size_unit (SizeUnit | str): Единица измерения для max_size. Может быть SizeUnit enum или строкой ('B', 'KB', 'MB', 'GB', 'bytes', 'kilobytes', 'megabytes', 'gigabytes'). Поддерживает русские названия ('байт', 'килобайт', 'мегабайт', 'гигабайт'). По умолчанию SizeUnit.BYTES.allowed_types (dict[str, list[str]]): Словарь разрешенных MIME типов и соответствующих им расширений файлов. Ключ - MIME тип (например, 'image/jpeg'), значение - список разрешенных расширений (например, ['jpg', 'jpeg']). При значении None валидация MIME типов, расширений и перекрестная валидация отключена. По умолчанию None. Пример:{ 'image/jpeg': ['jpg', 'jpeg'], 'image/png': ['png'], }is_validate_extension (bool): Включить валидацию расширений файлов. Работает только при предоставленном allowed_types. Проверяет, что у файла есть расширение и оно находится в списке разрешенных. По умолчанию True.is_validate_mime_type (bool): Включить валидацию MIME типов файлов. Работает только при предоставленном allowed_types. Проверяет, что у файла есть MIME тип и он находится в списке разрешенных. По умолчанию True.is_cross_validation (bool): Включить перекрестную валидацию расширения файла с его MIME типом. Работает только при предоставленном allowed_types. Проверяет, что расширение файла соответствует указанному MIME типу. По умолчанию True.
Можно валидировать по отдельности:
from file_validator import FileValidator
image_types = {
'image/jpeg': ['jpg', 'jpeg'],
'image/jpg': ['jpg', 'jpeg'],
'image/png': ['png'],
}
vc = FileValidator(
max_size=1000,
size_unit='килобайт',
allowed_types=image_types,
)
file_name = 'image.jpeg'
with open(file_name, 'rb') as f:
file_content = f.read()
vc.validate_size(file_content)
extension = vc.validate_extension_exists(file_name)
vc.validate_extension_allowed(extension)
mime_type = vc.detect_mime_type(file_content) # Так же есть асинхронный метод adetect_mime_type()
vc.validate_mime_type_allowed(mime_type)
vc.validate_extension_mime_match(extension, mime_type)
print(f'{extension=}')
print(f'{mime_type=}')
- Если какая-то валидация будет провалена, вызовется исключение.
Можно валидировать всё сразу:
from file_validator import FileValidator
image_types = {
'image/jpeg': ['jpg', 'jpeg'],
'image/jpg': ['jpg', 'jpeg'],
'image/png': ['png'],
}
vc = FileValidator(
max_size=1000,
size_unit='килобайт',
allowed_types=image_types,
)
file_name = 'image.jpeg'
with open(file_name, 'rb') as f:
file_content = f.read()
extension, mime_type = vc.validate_all(file_content, file_name) # Так же есть асинхронный метод avalidate_all()
print(f'{extension=}')
print(f'{mime_type=}')
Запуск локально (для разработки):
Установка зависимостей
pip install -r requirements.txt
После установки валидатора файлов необходимо установить libmagic, для чего вам нужно выполнить следующую команду:
- Windows:
pip install python-magic-bin
- Debian/Ubuntu:
sudo apt-get install libmagic1
- MacOS:
brew install libmagic
Запуск примеров:
python -m example.validator_steps
python -m example.validator_all
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file universal_file_validator-0.0.1.tar.gz.
File metadata
- Download URL: universal_file_validator-0.0.1.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a062e4ac78491f1145804046ad8b9cfed23ba1bf3d1f0b680495d8ed973bdb10
|
|
| MD5 |
34b9aed40e120fd576aa006b151b38f7
|
|
| BLAKE2b-256 |
6845b51dccda6d2d5a05cf04e84481aeb763fa9732236e10a174f8246122e92c
|
File details
Details for the file universal_file_validator-0.0.1-py3-none-any.whl.
File metadata
- Download URL: universal_file_validator-0.0.1-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc8fde13bbc78cc24d466dbe522c5488477452338e052a24a24490e965975db9
|
|
| MD5 |
8501c9fb7ba76fa642fe53bfcd373549
|
|
| BLAKE2b-256 |
b4d9cd13264c77b5a150ac4e35a10dec6e2b1f6049f49f63d3f9b4a1d2e752d8
|