[TYPO3-english] Re: How to handle file uploads in the Backend ?

Florian Rival florian.typo3 at oktopuce.fr
Tue Mar 21 12:18:10 CET 2017


Hi,

First, check if your controller and model are correct and that you correctly configure the upload folder for file upload (filemount in Typo3 BE and property $defaultUploadFolder in extension and plugin.tx_myext.settings.imagesFolder = 1:/user_upload/ in TS setup).

In your model :

    /**
     * Image
     *
     * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
     */
    protected $image = NULL;

with the correct getter and setter.

In your controller :

    /**
     * Set TypeConverter option for file upload
     */
    public function initializeCreateAction() {
        $mediaUploadConfiguration = array(
            UploadedFileReferenceConverter::CONFIGURATION_ALLOWED_FILE_EXTENSIONS => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
            UploadedFileReferenceConverter::CONFIGURATION_UPLOAD_FOLDER => $this->settings['imagesFolder'],
        );
        
        /** @var PropertyMappingConfiguration $newMyModelConfiguration */
        $newMyModelConfiguration = $this->arguments->getArgument('newModel')->getPropertyMappingConfiguration();

        // Define conversion to file reference for image
        $newMyModelConfiguration->forProperty('image')
            ->setTypeConverterOptions(
                'COnpany\\MyExt\\Property\\TypeConverter\\UploadedFileReferenceConverter',
                $mediaUploadConfiguration
            );
    }

    /**
     * action create
     *
     * @param \Company\MyExt\Domain\Model\MyModel $newModel
     * @return void
     */
    public function createAction(\Company\MyExt\Domain\Model\MyModel $newModel) {
        ...
    }

Next, check the following points.

In ext_localconf.php :

// For files upload
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerTypeConverter(\Company\MyExt\Property\TypeConverter\UploadedFileReferenceConverter::class);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerTypeConverter(\Company\MyExt\Property\TypeConverter\ObjectStorageConverter::class);

In directory MyExt/Classes/Property/TypeConverter, you should have the two files from upload_example : ObjectStorageConverter.php & UploadedFileReferenceConverter.php (don't forget to change the namespace).

In file MyExt/Configuration/TCA/tx_myext_domain_model_mymodel.php

        'image'           => array(
            'exclude' => 1,
            'label'   => 'Image',
            'config'  => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('image', array(
                'appearance'           => array(
                    'elementBrowserType'    => 'file',
                    'elementBrowserAllowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
                ),
                'minitems'             => 0,
                'maxitems'             => 1,
                // custom configuration for displaying fields in the overlay/reference table
                // to use the imageoverlayPalette instead of the basicoverlayPalette
                'foreign_match_fields' => array(
                    'fieldname'   => 'image',
                    'tablenames'  => 'tx_myext_domain_model_mymodel',
                    'table_local' => 'sys_file',
                ),
                'foreign_types'        => array(
                    '0'                                                 => array(
                        'showitem' => '
                            --palette--;;imagePalette,
                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                            --palette--;;filePalette',
                    ),
                ),
            ), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']),
        ),


If you add some columns for sys_file_reference, update Domain/Model/FileReference.php, ext_tables.sql, /Configuration/TCA/Overrides/sys_file_reference.php

Florian

-- 
-- Florian Rival --
www.oktopuce.fr


More information about the TYPO3-english mailing list