Feature #88833

Extend possibility to create FileReference in frontend with a given File object

Added by Jan Kornblum 6 months ago. Updated 9 days ago.

Should have
File Abstraction Layer (FAL)
Target version:
Start date:
Due date:
% Done:


PHP Version:
Extbase, FileReference, FAL, Frontend, Create
Sprint Focus:


Related to https://forge.typo3.org/issues/48965#note-21 it is still not possible, to create a FileReference in frontend context by a given File object. So still a custom extended FileReference class is neccessary. Please add a setFile() method to the native Extbase FileReference class like this:

 * Class FileReference
class FileReference extends \TYPO3\CMS\Extbase\Domain\Model\FileReference {

     * uid of a sys_file
     * @var integer
    protected $originalFileIdentifier;

     * setOriginalResource
     * @param \TYPO3\CMS\Core\Resource\ResourceInterface $originalResource
     * @return void
    public function setOriginalResource(\TYPO3\CMS\Core\Resource\ResourceInterface $originalResource) {
        $this->originalResource = $originalResource;
        $this->originalFileIdentifier = (int)$originalResource->getOriginalFile()->getUid();

     * setFile
     * @param \TYPO3\CMS\Core\Resource\File $falFile
     * @return void
    public function setFile(\TYPO3\CMS\Core\Resource\File $falFile) {
        $this->originalFileIdentifier = (int)$falFile->getUid();


With this, creating a new FileReference in frontend will be possible by core for all three variants like following:

// A) File Objekt already exists in Storage(but Storage doesn't know it yet):
$file = ResourceFactory::getInstance()->retrieveFileOrFolderObject('path_to_file');

// B) File Objekt exists anywhere and will be copied to storage:
$storage = ResourceFactory::getInstance()->getDefaultStorage();
$file = $storage->getFolder('folder_name')->addFile('path_to_file');

// C) File Objekt doesn't yet existan will be created as an empty file (can be filled later using setContents() or else):
$storage = ResourceFactory::getInstance()->getDefaultStorage();
$file = $storage->getFolder('folder_name')->createFile('path_to_file', $folder);

// Create the file reference itself here (for A, B, and C)
$fileReference = $objectManager->get(\TYPO3\CMS\Extbase\Domain\Model\FileReference::class);

Related issues

Related to TYPO3 Core - Bug #66813: Persisting extbase FileReference does not work with default TCA configuration Accepted 2015-05-06


#1 Updated by Christian Eßl 4 months ago

  • Related to Bug #66813: Persisting extbase FileReference does not work with default TCA configuration added

#2 Updated by Yohann CERDAN 9 days ago

+1 for this, i dont know why this is not by default after such a time.

Also available in: Atom PDF