Database structure

This chapter lists the various tables related to the file abstraction layer (FAL) and highlights some of their important fields.

sys_file

This table is used to store basic information about each file. Some important fields:

storage

ID of the storage where the file is stored.

type

The type of the file represented by an integer defined in \TYPO3\CMS\Core\Resource\AbstractFile.

See globals-constants-file-types for more details.

identifier

A string which should uniquely identify a file within its storage. Duplicate identifiers are possible, but will create a confusion. For the local file system driver, the identifier is the path to the file, relative to the storage root (starting with a slash and using a slash as directory delimiter).

name

The name of the file. For the local file system driver, this will be the current name of the file in the file system.

sha1

A hash of the file's content. This is used to detect whether a file has changed or not.

metadata

Foreign side of the sys_file_metadata relation. Always 0 in the database, but necessary for the TCA of the sys_file table.

sys_file_metadata

This table is used to store metadata about each file. It has a one-to-one relationship with table sys_file. Contrary to the basic information stored in sys_file, the content of the table sys_file_metadata can be translated.

Most fields are really just additional information. The most important one is:

file

ID of the sys_file record of the file the metadata is related to.

The sys_file_metadata table is extended by the system extension filemetadata. In particular, it adds the necessary definitions to categorize files with system categories.

sys_file_reference

This table is used to store all references between files and whatever other records they are used in, typically pages and content elements. The most important fields are:

uid_local

ID of the file.

uid_foreign

ID of the related record.

tablenames

Name of the table containing the related record.

fieldname

Name of the field of the related record where the relation was created.

table_local

Changed in version 12.0: The field is no longer evaluated by TYPO3 and has therefore been dropped. Remove any usage of the table_local field of table sys_file_reference in custom extension code.

title

When a file is referenced, normally its title is used (for whatever purpose, like displaying a caption for example). However it is possible to define a title in the reference, which will be used instead of the original file's title.

The fields description, alternative and downloadname obey the same principle.

sys_file_processedfile

This table is similar to sys_file, but for "temporary" files, like image previews. This table does not have a TCA representation, as it is only written for using direct SQL queries in the source code.

sys_file_collection

Changed in version 12.2: The two fields storage and folder are now combined into the new field folder_identifier.

FAL offers the possibility to create file collections, which can then be used for various purposes. By default, they can be used with the "File links" content element.

The most important fields are:

type

The type of the collection. A collection can be based on hand-picked files, a folder or categories.

files

The list of selected files. The relationship between files and their collection is also stored in sys_file_reference.

folder_identifier

The field contains the so-called "combined identifier" in the format storage:folder, where "storage" is the uid of the corresponding sys_file_storage record and folder the absolute path to the folder. An example for a combined identifier is 1:/user_upload.

category

The chosen categories, for category-type collections.

sys_file_storage

This table is used to store the storages available in the installation. The most important fields are:

driver

The type of driver used for the storage.

configuration

The storage configuration with regards to its driver. This is a FlexForm field and the current options depend on the selected driver.

sys_filemounts

Changed in version 12.0.

File mounts are not specifically part of FAL (they existed long before), but their definition is based on storages. Each file mount is related to a specific storage. The most important field is:

identifier

The identifier in the format base:path, where base is the storage ID and path the path to the folder, for example 1:/user_upload.