Bug #64224
closed
GIFBUILDER with FAL and UTF-8 filesystem
Added by Peter Niederlag about 9 years ago.
Updated over 6 years ago.
Category:
File Abstraction Layer (FAL)
Description
given is a file "wärme.png"
given is the file is used in a content element via a file refernce (FAL)
given is a TypoScript setup to render the image via a GIFBUILDER Object
then I see a broken image rendered as the filename is not processed correctly
ContentObjectRender->getImgResource() does return '$processedFileObject->getPublicUrl()' inside the imgResource of the processdFile which is rawurlencoded().
This patch/change cures the problem by adding an extra rawurldecod() inside the GifBuilder. Does not feel like the proper solution and I will see if it breaks anywhere else for some time.
iff --git a/typo3/sysext/frontend/Classes/Imaging/GifBuilder.php b/typo3/sysext/frontend/Classes/Imaging/GifBuilder.php
index 9d13e6c..306b676 100644
--- a/typo3/sysext/frontend/Classes/Imaging/GifBuilder.php
+++ b/typo3/sysext/frontend/Classes/Imaging/GifBuilder.php
@@ -206,7 +206,7 @@ class GifBuilder extends \TYPO3\CMS\Core\Imaging\GraphicalFunctions {
$fileInfo = $this->getResource($conf['file'], $conf['file.']);
if ($fileInfo) {
$this->combinedFileNames[] = preg_replace('/\\.[[:alnum:]]+$/', '', basename($fileInfo[3]));
- $this->setup[$theKey . '.']['file'] = $fileInfo[3];
+ $this->setup[$theKey . '.']['file'] = rawurldecode($fileInfo[3]);
$this->setup[$theKey . '.']['BBOX'] = $fileInfo;
$this->objBB[$theKey] = $fileInfo;
if ($conf['mask']) {
- Subject changed from GIFBUILDE with FAL and UTF-8 filesystem to GIFBUILDER with FAL and UTF-8 filesystem
- Category set to File Abstraction Layer (FAL)
- Target version set to 7.1 (Cleanup)
- Sprint Focus set to On Location Sprint
IMO using getPublicUrl() for internal further processing is just plain wrong. Does not work for protected storages I guess and will for sure not work if there's some other driver than the LocalDriver.
Markus Klein wrote:
IMO using getPublicUrl() for internal further processing is just plain wrong. Does not work for protected storages I guess and will for sure not work if there's some other driver than the LocalDriver.
I do very much agree, but what's the alternative? GifBuilder relies on ContentObjectRenderer->getImgResource(), that doesn't seem debatable to me. However this will add 'originalFile' in case of an fileObject so maybe GifBuilder should pick up on that on if it's available?
For processing a file use getForLocalProcessing() and not getPublicUrl().
Frans Saris wrote:
For processing a file use getForLocalProcessing() and not getPublicUrl().
Using getForLocalProcessing() seems to work fine if we directly use it in GifBuilder
$this->setup[$theKey . '.']['file'] = $fileInfo['originalFile']->getForLocalProcessing();
Should there be a check to see, if $fileInfo['originalFile'] is really available?
Hi,
first of all, many thx for your initiative.
Torben Hansen wrote:
Frans Saris wrote:
For processing a file use getForLocalProcessing() and not getPublicUrl().
Using getForLocalProcessing() seems to work fine if we directly use it in GifBuilder
[...]
Should there be a check to see, if $fileInfo['originalFile'] is really available?
If GIFBUILDER can still work without FAL (which I think is true), then there must be a check if originalFile is available. Should not be to expensive and is just making this beast less error prone.
- Status changed from New to Under Review
Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at http://review.typo3.org/36180
Patch set 2 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at http://review.typo3.org/36180
Patch set 1 for branch TYPO3_6-2 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at http://review.typo3.org/36340
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
- Sprint Focus deleted (
On Location Sprint)
- Status changed from Resolved to Closed
Also available in: Atom
PDF