File

Validates that a value is a valid "file", which can be one of the following:

値が有効な「ファイル」であることを検証します。次のいずれかになります。
  • A string (or object with a __toString() method) path to an existing file;
    既存のファイルへの文字列 (または __toString() メソッドを持つオブジェクト) パス。
  • A valid File object (including objects of UploadedFile class).
    有効なファイル オブジェクト (UploadedFile クラスのオブジェクトを含む)。

This constraint is commonly used in forms with the FileType form field.

この制約は、FileTypeform フィールドを持つフォームで一般的に使用されます。

See also

こちらもご覧ください

If the file you're validating is an image, try the Image constraint.

検証しているファイルが画像の場合は、Imageconstraint を試してください。
Applies to property or method
Class File
Validator FileValidator

Basic Usage

This constraint is most commonly used on a property that will be rendered in a form as a FileType field. For example, suppose you're creating an author form where you can upload a "bio" PDF for the author. In your form, the bioFile property would be a file type. The Author class might look as follows:

この制約は、フォームで FileType フィールドとしてレンダリングされるプロパティで最も一般的に使用されます。たとえば、著者の「略歴」PDF をアップロードできる著者フォームを作成しているとします。あなたのフォームでは、bioFile プロパティはファイルタイプになります。 Author クラスは次のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\HttpFoundation\File\File;

class Author
{
    protected $bioFile;

    public function setBioFile(File $file = null)
    {
        $this->bioFile = $file;
    }

    public function getBioFile()
    {
        return $this->bioFile;
    }
}

To guarantee that the bioFile File object is valid and that it is below a certain file size and a valid PDF, add the following:

bioFile ファイル オブジェクトが有効であり、特定のファイル サイズと有効な PDF を下回っていることを保証するには、次を追加します。
  • Attributes
    属性
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    #[Assert\File(
        maxSize: '1024k',
        extensions: ['pdf'],
        extensionsMessage: 'Please upload a valid PDF',
    )]
    protected $bioFile;
}

The bioFile property is validated to guarantee that it is a real file. Its size and mime type are also validated because the appropriate options have been specified.

bioFile プロパティは、実際のファイルであることを保証するために検証されます。適切なオプションが指定されているため、サイズと MIME タイプも検証されます。

Note

ノート

As with most of the other constraints, null and empty strings are considered valid values. This is to allow them to be optional values. If the value is mandatory, a common solution is to combine this constraint with NotBlank.

他のほとんどの制約と同様に、null および空の文字列は有効な値と見なされます。これは、それらをオプションの値にできるようにするためです。値が必須の場合、一般的な解決策は、この制約と NotBlank を組み合わせることです。

Options

binaryFormat

type: boolean default: null

タイプ: ブール デフォルト: null

When true, the sizes will be displayed in messages with binary-prefixed units (KiB, MiB). When false, the sizes will be displayed with SI-prefixed units (kB, MB). When null, then the binaryFormat will be guessed from the value defined in the maxSize option.

true の場合、サイズはバイナリ プレフィックス単位 (KiB、MiB) でメッセージに表示されます。 false の場合、サイズは SI プレフィックス単位 (kB、MB) で表示されます。 null の場合、binaryFormat は maxSize オプションで定義された値から推測されます。

For more information about the difference between binary and SI prefixes, see Wikipedia: Binary prefix.

バイナリ プレフィックスと SI プレフィックスの違いの詳細については、Wikipedia: バイナリ プレフィックスを参照してください。

extensions

type: array or string

タイプ: 配列または文字列

6.2

6.2

The extensions option was introduced in Symfony 6.2.

extensions オプションは Symfony 6.2 で導入されました。

If set, the validator will check that the extension and the media type (formerly known as MIME type) of the underlying file are equal to the given extension and associated media type (if a string) or exist in the collection (if an array).

設定されている場合、バリデーターは、基になるファイルの拡張子とメディア タイプ (以前は MIME タイプと呼ばれていました) が、指定された拡張子と関連付けられたメディア タイプ (文字列の場合) と等しいか、コレクションに存在するか (配列の場合) をチェックします。

By default, all media types associated with an extension are allowed. The list of supported extensions and associated media types can be found on the IANA website.

デフォルトでは、拡張機能に関連付けられたすべてのメディア タイプが許可されます。サポートされている拡張機能と関連するメディア タイプのリストは、IANA Web サイトにあります。

It's also possible to explicitly configure the authorized media types for an extension.

拡張機能の承認済みメディア タイプを明示的に構成することもできます。

In the following example, allowed media types are explicitly set for the xml and txt extensions, and all associated media types are allowed for jpg:

次の例では、許可されているメディア タイプが xml および txt 拡張子に対して明示的に設定されており、関連するすべてのメディア タイプが jpg に対して許可されています。
1
2
3
4
5
[
    'xml' => ['text/xml', 'application/xml'],
    'txt' => 'text/plain',
    'jpg',
]

disallowEmptyMessage

type: string default: An empty file is not allowed.

タイプ: 文字列 デフォルト: 空のファイルは許可されません。

This constraint checks if the uploaded file is empty (i.e. 0 bytes). If it is, this message is displayed.

この制約は、アップロードされたファイルが空 (つまり 0 バイト) かどうかをチェックします。そうである場合、このメッセージが表示されます。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ file }} Absolute file path
{{ name }} Base file name

groups

type: array | string

タイプ: 配列 |ストリング

It defines the validation group or groups of this constraint. Read more about validation groups.

この制約の検証グループを定義します。検証グループの詳細を参照してください。

maxSize

type: mixed

タイプ: 混合

If set, the size of the underlying file must be below this file size in order to be valid. The size of the file can be given in one of the following formats:

設定されている場合、有効であるためには、基になるファイルのサイズがこのファイル サイズ未満である必要があります。ファイルのサイズは、次のいずれかの形式で指定できます。
Suffix Unit Name Value Example
(none) byte 1 byte 4096
k kilobyte 1,000 bytes 200k
M megabyte 1,000,000 bytes 2M
Ki kibibyte 1,024 bytes 32Ki
Mi mebibyte 1,048,576 bytes 8Mi

For more information about the difference between binary and SI prefixes, see Wikipedia: Binary prefix.

バイナリ プレフィックスと SI プレフィックスの違いの詳細については、Wikipedia: バイナリ プレフィックスを参照してください。

maxSizeMessage

type: string default: The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.

タイプ: 文字列 デフォルト: ファイルが大きすぎます ({{ サイズ }} {{ サフィックス }})。許容される最大サイズは {{ limit }} {{ suffix }} です。

The message displayed if the file is larger than the maxSize option.

ファイルが maxSize オプションより大きい場合に表示されるメッセージ。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ file }} Absolute file path
{{ limit }} Maximum file size allowed
{{ name }} Base file name
{{ size }} File size of the given file
{{ suffix }} Suffix for the used file size unit (see above)

mimeTypes

type: array or string

タイプ: 配列または文字列

Caution

注意

You should always use the extensions option instead of mimeTypes except if you explicitly don't want to check that the extension of the file is consistent with its content (this can be a security issue).

ファイルの拡張子がそのコンテンツと一致していることを明示的に確認したくない場合を除いて、常に mimeTypes の代わりに extensions オプションを使用する必要があります (これはセキュリティ上の問題になる可能性があります)。

By default, the extensions option also checks the media type of the file.

デフォルトでは、拡張子オプションはファイルのメディア タイプもチェックします。

If set, the validator will check that the media type (formerly known as MIME type) of the underlying file is equal to the given mime type (if a string) or exists in the collection of given mime types (if an array).

設定されている場合、バリデーターは、基になるファイルのメディア タイプ (以前は MIMEtype と呼ばれていました) が、指定された MIME タイプ (文字列の場合) と等しいか、指定された MIME タイプのコレクション内に存在するか (配列の場合) をチェックします。

You can find a list of existing mime types on the IANA website.

IANA Web サイトで既存の MIME タイプのリストを見つけることができます。

Note

ノート

When using this constraint on a FileType field, the value of the mimeTypes option is also used in the accept attribute of the related <input type="file"/> HTML element.

FileType フィールドでこの制約を使用する場合、mimeTypes オプションの値は、関連する HTML 要素の accept 属性でも使用されます。

This behavior is applied only when using form type guessing (i.e. the form type is not defined explicitly in the ->add() method of the form builder) and when the field doesn't define its own accept value.

この動作は、フォーム タイプの推測を使用している場合 (つまり、フォーム タイプがフォーム ビルダの ->add() メソッドで明示的に定義されていない場合)、およびフィールドが独自の受け入れ値を定義していない場合にのみ適用されます。

extensionsMessage

type: string default: The extension of the file is invalid ({{ extension }}). Allowed extensions are {{ extensions }}.

型: 文字列 デフォルト: ファイルの拡張子が無効です ({{ 拡張子 }})。許可されている拡張機能は {{ 拡張機能 }} です。

6.2

6.2

The extensionsMessage option was introduced in Symfony 6.2.

extensionsMessage オプションは Symfony 6.2 で導入されました。

The message displayed if the extension of the file is not a valid extension per the extensions option.

ファイルの拡張子が extensions オプションごとの有効な拡張子でない場合に表示されるメッセージ。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ file }} Absolute file path
{{ name }} Base file name
{{ type }} The MIME type of the given file
{{ types }} The list of allowed MIME types

mimeTypesMessage

type: string default: The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.

タイプ: 文字列 デフォルト: ファイルの MIME タイプが無効です ({{ タイプ }})。許可されている MIME タイプは {{ タイプ }} です。

The message displayed if the media type of the file is not a valid media type per the mimeTypes option.

ファイルのメディア タイプが mimeTypes オプションで有効なメディア タイプでない場合に表示されるメッセージ。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ file }} Absolute file path
{{ name }} Base file name
{{ type }} The MIME type of the given file
{{ types }} The list of allowed MIME types

notFoundMessage

type: string default: The file could not be found.

タイプ: 文字列 デフォルト: ファイルが見つかりませんでした。

The message displayed if no file can be found at the given path. This error is only likely if the underlying value is a string path, as a File object cannot be constructed with an invalid file path.

指定されたパスにファイルが見つからない場合に表示されるメッセージ。 File オブジェクトは無効なファイル パスで構築できないため、このエラーは、基になる値が文字列パスである場合にのみ発生する可能性があります。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ file }} Absolute file path

notReadableMessage

type: string default: The file is not readable.

タイプ: 文字列 デフォルト: ファイルは読み取れません。

The message displayed if the file exists, but the PHP is_readable() function fails when passed the path to the file.

ファイルが存在する場合にメッセージが表示されますが、ファイルへのパスが渡されたときに PHP の is_readable() 関数が失敗します。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ file }} Absolute file path

payload

type: mixed default: null

タイプ: 混合 デフォルト: null

This option can be used to attach arbitrary domain-specific data to a constraint. The configured payload is not used by the Validator component, but its processing is completely up to you.

このオプションは、任意のドメイン固有のデータを制約に添付するために使用できます。構成されたペイロードは Validator コンポーネントによって使用されませんが、その処理は完全にユーザー次第です。

For example, you may want to use several error levels to present failed constraints differently in the front-end depending on the severity of the error.

たとえば、いくつかのエラー レベルを使用して、エラーの重大度に応じて、失敗した制約をフロントエンドで異なる方法で提示することができます。

uploadCantWriteErrorMessage

type: string default: Cannot write temporary file to disk.

タイプ: 文字列 デフォルト: 一時ファイルをディスクに書き込めません。

The message that is displayed if the uploaded file can't be stored in the temporary folder.

アップロードしたファイルが一時フォルダに保存できない場合に表示されるメッセージです。

This message has no parameters.

このメッセージにはパラメーターがありません。

uploadErrorMessage

type: string default: The file could not be uploaded.

タイプ: 文字列 デフォルト: ファイルをアップロードできませんでした。

The message that is displayed if the uploaded file could not be uploaded for some unknown reason.

アップロードしたファイルが不明な理由でアップロードできなかった場合に表示されるメッセージ。

This message has no parameters.

このメッセージにはパラメーターがありません。

uploadExtensionErrorMessage

type: string default: A PHP extension caused the upload to fail.

タイプ: 文字列 デフォルト: PHP 拡張機能が原因でアップロードが失敗しました。

The message that is displayed if a PHP extension caused the file upload to fail.

PHP 拡張機能が原因でファイルのアップロードが失敗した場合に表示されるメッセージ。

This message has no parameters.

このメッセージにはパラメーターがありません。

uploadFormSizeErrorMessage

type: string default: The file is too large.

タイプ: 文字列 デフォルト: ファイルが大きすぎます。

The message that is displayed if the uploaded file is larger than allowed by the HTML file input field.

アップロードされたファイルが HTML ファイル入力フィールドで許可されているサイズよりも大きい場合に表示されるメッセージ。

This message has no parameters.

このメッセージにはパラメーターがありません。

uploadIniSizeErrorMessage

type: string default: The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.

タイプ: 文字列 デフォルト: ファイルが大きすぎます。許容される最大サイズは {{ limit }} {{ suffix }} です。

The message that is displayed if the uploaded file is larger than the upload_max_filesize php.ini setting.

アップロードされたファイルが upload_max_filesizephp.ini 設定より大きい場合に表示されるメッセージ。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ limit }} Maximum file size allowed
{{ suffix }} Suffix for the used file size unit (see above)

uploadNoFileErrorMessage

type: string default: No file was uploaded.

タイプ: 文字列 デフォルト: ファイルはアップロードされませんでした。

The message that is displayed if no file was uploaded.

ファイルがアップロードされなかった場合に表示されるメッセージ。

This message has no parameters.

このメッセージにはパラメーターがありません。

uploadNoTmpDirErrorMessage

type: string default: No temporary folder was configured in php.ini.

タイプ: 文字列 デフォルト: php.ini で設定された一時フォルダーはありません。

The message that is displayed if the php.ini setting upload_tmp_dir is missing.

php.ini 設定の upload_tmp_dir が欠落している場合に表示されるメッセージ。

This message has no parameters.

このメッセージにはパラメーターがありません。

uploadPartialErrorMessage

type: string default: The file was only partially uploaded.

タイプ: 文字列 デフォルト: ファイルは部分的にのみアップロードされました。

The message that is displayed if the uploaded file is only partially uploaded.

アップロードされたファイルが部分的にしかアップロードされていない場合に表示されるメッセージ。

This message has no parameters.

このメッセージにはパラメーターがありません。