---
title: "ファイルストレージ API"
version: 5.0
locale: ja
source: https://docs.djangoproject.com/ja/5.0/ref/files/storage/
canonical: https://djangodocs.dev/ja/5.0/ref/files/storage/
---
# ファイルストレージ API

## デフォルトのストレージクラスの取得

Djangoでは、デフォルトストレージクラスにアクセスするための便利な方法を提供しています。

#### `storages`

> **New in Django 4.2**

[`STORAGES`](/ja/5.0/ref/settings/#std-setting-STORAGES) によって定義されたストレージのインスタンス。

#### `class DefaultStorage`

[`DefaultStorage`](#django.core.files.storage.DefaultStorage) は、[`STORAGES`](/ja/5.0/ref/settings/#std-setting-STORAGES) で定義された `default` キーによって定義されたデフォルトのストレージシステムへの遅延アクセスを提供します。 [`DefaultStorage`](#django.core.files.storage.DefaultStorage) は、内部的に [`storages`](#django.core.files.storage.storages) を使用します。

#### `default_storage`

[`default_storage`](#django.core.files.storage.default_storage) は [`DefaultStorage`](#django.core.files.storage.DefaultStorage) のインスタンスです。

#### `get_storage_class(import_path=None)`

ストレージAPIを実装するクラスまたはモジュールを返します。

`import_path` パラメータが提供されない場合、`get_storage_class` は [`STORAGES`](/ja/5.0/ref/settings/#std-setting-STORAGES) の `default` キーで定義されたデフォルトのストレージシステムを返します。 `import_path` が提供された場合、`get_storage_class` は指定されたパスからクラスまたはモジュールをインポートしようと試み、成功した場合はそれを返します。インポートが失敗した場合は例外が発生します。

> **Deprecated since Django 4.2**
>
> バージョン 4.2 で非推奨: `get_storage_class()` 関数は非推奨です。代わりに [`storages`](#django.core.files.storage.storages) を使用してください。

## `FileSystemStorage` クラス

#### `class FileSystemStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)`

[`FileSystemStorage`](#django.core.files.storage.FileSystemStorage) クラスは、ローカルファイルシステム上での基本的なファイルストレージを実装しています。これは [`Storage`](#django.core.files.storage.Storage) から継承し、そこで定義されたすべてのパブリックメソッドに対する実装を提供します。

#### `location`

ファイルを格納するディレクトリの絶対パス。デフォルトは [`MEDIA_ROOT`](/ja/5.0/ref/settings/#std-setting-MEDIA_ROOT) 設定の値です。

#### `base_url`

この場所に保存されているファイルが提供される URL。デフォルトは [`MEDIA_URL`](/ja/5.0/ref/settings/#std-setting-MEDIA_URL) 設定の値です。

#### `file_permissions_mode`

保存される際にファイルが受け取るファイルシステムの権限。デフォルトは [`FILE_UPLOAD_PERMISSIONS`](/ja/5.0/ref/settings/#std-setting-FILE_UPLOAD_PERMISSIONS) です。

#### `directory_permissions_mode`

保存された際にそのディレクトリが受け取るファイルシステムの権限。デフォルトは [`FILE_UPLOAD_DIRECTORY_PERMISSIONS`](/ja/5.0/ref/settings/#std-setting-FILE_UPLOAD_DIRECTORY_PERMISSIONS) です。

> **Note**
>
> `FileSystemStorage.delete()` メソッドは、指定されたファイル名が存在しない場合に例外を発生させません。

#### `get_created_time(name)`

システムの ctime、つまり [`os.path.getctime()`](https://docs.python.org/3/library/os.path.html#os.path.getctime) の [`datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime) を返します。一部のシステム(例えば Unix)では、これは最後のメタデータ変更の時間ですが、他のシステム(例えば Windows)では、ファイルの作成時間です。

## `InMemoryStorage` クラス

> **New in Django 4.2**

#### `class InMemoryStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)`

[`InMemoryStorage`](#django.core.files.storage.InMemoryStorage) クラスはメモリベースのファイルストレージを実装しています。永続性はありませんが、ディスクアクセスを避けることでテストの高速化に役立ちます。

#### `location`

ファイルに割り当てられたディレクトリ名の絶対パス。デフォルトは、[`MEDIA_ROOT`](/ja/5.0/ref/settings/#std-setting-MEDIA_ROOT) 設定値を使います。

#### `base_url`

この場所に保存されているファイルが提供される URL。デフォルトは [`MEDIA_URL`](/ja/5.0/ref/settings/#std-setting-MEDIA_URL) 設定の値です。

#### `file_permissions_mode`

ファイルに割り当てられたファイルシステムの権限は、 `FileSystemStorage` との互換性を提供するために用意されています。デフォルトは [`FILE_UPLOAD_PERMISSIONS`](/ja/5.0/ref/settings/#std-setting-FILE_UPLOAD_PERMISSIONS) です。

#### `directory_permissions_mode`

ディレクトリに割り当てられたファイルシステムの権限であり、 `FileSystemStorage` との互換性のために提供されます。デフォルトは [`FILE_UPLOAD_DIRECTORY_PERMISSIONS`](/ja/5.0/ref/settings/#std-setting-FILE_UPLOAD_DIRECTORY_PERMISSIONS) です。

## `Storage` クラス

#### `class Storage`

[`Storage`](#django.core.files.storage.Storage) クラスは、ファイルを保存するための標準化された API と、他のすべてのストレージシステムが継承または必要に応じてオーバーライドできる一連のデフォルト動作を提供します。

> **Note**
>
> メソッドが naive な `datetime` オブジェクトを返す場合、実際に使用されるタイムゾーンは `os.environ['TZ']` の現在の値になります。これは通常、Djangoの [`TIME_ZONE`](/ja/5.0/ref/settings/#std-setting-TIME_ZONE) から設定されることに注意してください。

#### `delete(name)`

`name` で参照されるファイルを削除します。対象のストレージシステムで削除がサポートされていない場合は、代わりに `NotImplementedError` を発生させます。

#### `exists(name)`

指定された名前で参照されるファイルがストレージシステムにすでに存在する場合は `True` を返し、新しいファイルに使用できる場合は `False` を返します。

#### `get_accessed_time(name)`

ファイルの最終アクセス時刻を [`datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime) で返します。最終アクセス時刻を返すことができないストレージシステムの場合は [`NotImplementedError`](https://docs.python.org/3/library/exceptions.html#NotImplementedError) を発生させます。

[`USE_TZ`](/ja/5.0/ref/settings/#std-setting-USE_TZ) が `True` の場合、意識的（aware）な `datetime` を返します。それ以外の場合、ローカルタイムゾーンのナイーブ（naive）な `datetime` を返します。

#### `get_alternative_name(file_root, file_ext)`

`file_root` および `file_ext` パラメータに基づいて代替ファイル名を返します。拡張子の前にアンダースコアとランダムな7文字の英数字文字列がファイル名に追加されます。

#### `get_available_name(name, max_length=None)`

`name` パラメータに基づいて、ターゲットのストレージシステム上で新しいコンテンツを書き込むために利用可能かつ空いているファイル名を返します。

`max_length` を指定した場合、ファイル名の長さはその値を超えません。自由な一意のファイル名が見つからない場合、 [`SuspiciousFileOperation`](/ja/5.0/ref/exceptions/#django.core.exceptions.SuspiciousOperation) 例外が発生します。

`name` という名前のファイルが既に存在する場合、代替名を取得するために [`get_alternative_name()`](/ja/5.0/howto/custom-file-storage/#django.core.files.storage.get_alternative_name) が呼び出されます。

#### `get_created_time(name)`

ファイルの作成時間を [`datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime) で返します。作成時間を返すことができないストレージシステムの場合、 [`NotImplementedError`](https://docs.python.org/3/library/exceptions.html#NotImplementedError) を発生させます。

[`USE_TZ`](/ja/5.0/ref/settings/#std-setting-USE_TZ) が `True` の場合、意識的（aware）な `datetime` を返します。それ以外の場合、ローカルタイムゾーンのナイーブ（naive）な `datetime` を返します。

#### `get_modified_time(name)`

ファイルの最終更新時間の [`datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime) を返します。最終更新時間を返すことができないストレージシステムの場合、 [`NotImplementedError`](https://docs.python.org/3/library/exceptions.html#NotImplementedError) を発生させます。

[`USE_TZ`](/ja/5.0/ref/settings/#std-setting-USE_TZ) が `True` の場合、意識的（aware）な `datetime` を返します。それ以外の場合、ローカルタイムゾーンのナイーブ（naive）な `datetime` を返します。

#### `get_valid_name(name)`

`name` パラメータに基づいて、ターゲットのストレージシステムで使用に適したファイル名を返します。

#### `generate_filename(filename)`

`filename` を [`get_valid_name()`](/ja/5.0/howto/custom-file-storage/#django.core.files.storage.get_valid_name) によって検証し、[`save()`](#django.core.files.storage.Storage.save) メソッドに渡すべきファイル名を返します。

`filename` 引数には、 [`FileField.upload_to`](/ja/5.0/ref/models/fields/#django.db.models.FileField.upload_to) によって返されたパスを含むことができます。その場合、パスは [`get_valid_name()`](/ja/5.0/howto/custom-file-storage/#django.core.files.storage.get_valid_name) に渡されることはありませんが、結果として得られた名前の前に再び追加されます。

デフォルトの実装では [`os.path`](https://docs.python.org/3/library/os.path.html#module-os.path) 操作を使用しています。この方法があなたのストレージに適していない場合は、このメソッドをオーバーライドしてください。

#### `listdir(path)`

指定されたパスの内容をリストアップし、2つのリストからなるタプルを返します。最初のアイテムはディレクトリで、2番目のアイテムはファイルです。このようなリストを提供できないストレージシステムでは、代わりに `NotImplementedError` を発生させます。

#### `open(name, mode='rb')`

`name` で指定されたファイルを開きます。返されるファイルは必ず `File` オブジェクトである保証がありますが、実際にはサブクラスである可能性があります。リモートファイルストレージの場合、読み書きがかなり遅いかもしれないので注意してください。

#### `path(name)`

ファイルがPythonの標準 `open()` を使って開けるローカルファイルシステムのパス。ローカルファイルシステムからアクセスできないストレージシステムの場合、代わりに `NotImplementedError` を発生させます。

#### `save(name, content, max_length=None)`

ストレージシステムを使用して新しいファイルを保存します。すでに `name` という名前のファイルが存在する場合、ストレージシステムは一意な名前を得るために必要に応じてファイル名を変更することがあります。保存されたファイルの実際の名前が返されます。

`max_length` 引数は [`get_available_name()`](/ja/5.0/howto/custom-file-storage/#django.core.files.storage.get_available_name) に渡されます。

`content` 引数は、[`django.core.files.File`](/ja/5.0/ref/files/file/#django.core.files.File) のインスタンス、または `File` でラップできるファイルライクオブジェクトでなければなりません。

#### `size(name)`

`name` で参照されるファイルの総サイズ(バイト単位)を返します。ファイルサイズを返せないストレージシステムの場合は、代わりに `NotImplementedError` を発生させます。

#### `url(name)`

`name` で参照されているファイルの内容にアクセスできるURLを返します。URLによるアクセスをサポートしていないストレージシステムの場合は、代わりに `NotImplementedError` を発生させます。
