TCA definition 

This chapter explains how to create a field that makes it possible to create relations to files.

The TCA field type File can be used to provide a field in which files can be referenced and/or uploaded:

EXT:my_extension/Configuration/TCA/my_table.php
<?php

return [
  'ctrl' => [
    // ...
  ],
  'columns' => [
    'my_media_file' => [
      'label' => 'My image',
      'config' => [
        'type' => 'file',
        'allowed' => 'common-media-types',
      ],
    ],
    // ...
  ],
  // ...
];
Copied!

The property appearance can be used to specify, if a file upload button and file by URL button (Vimeo, Youtube) should be displayed.

Example:

EXT:my_extension/Configuration/TCA/Overrides/my_table.php
<?php

$GLOBALS['TCA']['my_table']['columns']['my_media_file']['config']['appearance'] = [
  'fileUploadAllowed' => false,
  'fileByUrlAllowed' => false,
];
Copied!

This will suppress two buttons for upload and external URL and only leave the button Create new relation.

Migration from ExtensionManagementUtility::getFileFieldTCAConfig 

EXT:my_extension/Configuration/TCA/my_table.php (migration)
-use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
-
 'columns' => [
     'image' => [
         'label' => 'My image',
-        'config' => ExtensionManagementUtility::getFileFieldTCAConfig(
-            'image',
-            [
-                'maxitems' => 6,
-            ],
-            $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
-        ),
+        'config' => [
+            'type' => 'file',
+            'maxitems' => 6,
+            'allowed' => 'common-image-types'
+        ],
     ],
 ],
Copied!