Класс FileSystemStorage

Класс FileSystemStorage реализует базовое хранилище для работы с файлами в файловой системе. Он наследуется от класса Storage и предоставляет методы для сохранения, открытия, удаления, проверки существования и получения информации о файлах. При инициализации можно указать корневую директорию, базовый URL и параметры создания файлов.

Синтаксис

pythonfrom django.core.files.storage import FileSystemStorage

storage = FileSystemStorage(
  location=None,
  base_url=None,
  file_permissions_mode=None,
  directory_permissions_mode=None
)

Параметры класса:

python# location - путь к корневой директории (по умолчанию MEDIA_ROOT)
# base_url - базовый URL для доступа к файлам (по умолчанию MEDIA_URL)
# file_permissions_mode - права доступа для создаваемых файлов (по умолчанию None)
# directory_permissions_mode - права доступа для создаваемых директорий (по умолчанию None)

Пример

Создадим экземпляр хранилища с указанием пользовательской директории и сохраним файл:

pythonfrom django.core.files.storage import FileSystemStorage
from django.core.files.base import ContentFile

# Создаем хранилище для папки 'uploads'
fs = FileSystemStorage(location='uploads')

# Сохраняем файл с содержимым
file_content = ContentFile(b'Hello, World!')
saved_name = fs.save('hello.txt', file_content)
print(saved_name)

Результат выполнения кода:

python"hello.txt"

Пример

Откроем сохраненный файл и прочитаем его содержимое:

pythonfrom django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location='uploads')

# Открываем файл для чтения
with fs.open('hello.txt', 'r') as file:
  content = file.read()
  print(content)

Результат выполнения кода:

python"Hello, World!"

Пример

Проверим существование файла и удалим его:

pythonfrom django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location='uploads')

# Проверяем существование файла
if fs.exists('hello.txt'):
  # Удаляем файл
  fs.delete('hello.txt')
  print('File deleted successfully')
else:
  print('File not found')

Результат выполнения кода:

python"File deleted successfully"

Пример

Получим список файлов в директории и информацию о размере:

pythonfrom django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location='uploads')

# Получаем список всех файлов
files = fs.listdir('')
print('Files:', files)

# Получаем размер файла
if files[1]:
  file_name = files[1][0]
  file_size = fs.size(file_name)
  print(f'File: {file_name}, Size: {file_size} bytes')

Результат выполнения кода:

python"Files: ([], ['hello.txt', 'example.pdf'])"
"File: hello.txt, Size: 13 bytes"

Пример

Сгенерируем URL для доступа к файлу через веб-сервер:

pythonfrom django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location='uploads', base_url='/media/')

# Получаем URL для файла
file_url = fs.url('hello.txt')
print(file_url)

Результат выполнения кода:

python"/media/hello.txt"

Смотрите также

  • класс Storage,
    базовый класс для всех хранилищ в Django
  • метод save,
    сохраняет файл в хранилище
  • метод open,
    открывает файл для чтения или записи
  • метод delete,
    удаляет файл из хранилища