Feature: #92518 - Introduce FileViewHelper

See forge#92518

Description

With #92518, the \TYPO3\CMS\Core\Controller\FileDumpController has been extended with new options to force the download of a file, as well as the option to define a custom filename.

To ease the use of the file dump functionality, especially the newly introduced options, a new ViewHelper TYPO3\CMS\Fluid\ViewHelpers\Link\FileViewHelper is added, which allows extension authors to easily create links to both public and non-public files.

The usage is as following:

<f:link.file file="{file}" download="true" filename="alternative-name.jpg">
   Download file
</f:link.file>

The above example will create a link to the given file, forcing a direct download, while using the alternative filename.

In case the file is publicly accessible, a direct link will be used. Otherwise the file dump functionality comes into play.

<!-- Public file -->
<a href="https://example.com/fileadmin/path/to/file.jpg"
   download="alternative-name.jpg"
>
   Download file
</a>

<!-- Non-public file -->
<a href="https://example.com/index.php?eID=dumpFile&t=f&f=123&dl=1&fn=alternative-name.jpg&token=79bce812">
   Download file
</a>

Note

The file argument accepts a \TYPO3\CMS\Core\Resource\FileInterface. So either a \TYPO3\CMS\Core\Resource\File, a \TYPO3\CMS\Core\Resource\FileReference or a \TYPO3\CMS\Core\Resource\ProcessedFile can be provided.

Note

The filename argument accepts an alternative filename. In case the provided filename contains a file extension, this must be the same as from the file object. If file extensions is omitted, the original file extension is automatically appended to the given filename.

Impact

The new ViewHelper allows creating links to files - even non-public ones - in a straightforward way within Fluid templates.