Разрешены ли ресурсы потока TYPO3 без конца?

мы используем интегрированный объект Resource TYPO3 Flow 2.3 для загрузки файлов любого типа в наш проект. Определение в нашем File Объект является:

/**
* @var \TYPO3\Flow\Resource\Resource
* @ORM\ManyToOne
*/
protected $originalresource;

И текучий призыв звучит так:

<a class="filelink" data-icon="{file.filetype}" href="{f:uri.resource(resource: file.originalresource)}" target="_blank">{file.name}</a>

Все в этом созвездии работает нормально, пока пользователь не загрузит файл без конца, как hosts, Сервер говорит Not Found в обычном стиле ошибок Apache. Поддерживаются ли файлы без окончаний или нет? Почему это происходит?

Настройка:

TYPO3:
Flow:
resource:
storages:
defaultPersistentResourcesStorage:
storage: 'TYPO3\Flow\Resource\Storage\WritableFileSystemStorage'
storageOptions:
path: '%FLOW_PATH_DATA%Persistent/Resources/'
targets:
localWebDirectoryPersistentResourcesTarget:
target: 'TYPO3\Flow\Resource\Target\FileSystemSymlinkTarget'
targetOptions:
path: '%FLOW_PATH_WEB%_Resources/Persistent/'
baseUri: '_Resources/Persistent/'

И созданная символическая ссылка для hosts файл в _Resources/Persistent/ именуется хешем, а затем точкой без конца файла, указывающей на фактический файл. Фактический файл существует.

2

Решение

Это ошибка, и вы можете сообщить об этом здесь: https://jira.neos.io/

В Flow 3.x все работает нормально, но с управлением ресурсами произошли серьезные изменения.

Добавление одной строки в Web / .htaccess должно решить проблему, но я не могу сказать, что это лучшее решение.

# Perform rewriting of persistent resource files
RewriteRule ^(_Resources/Persistent/.{40})/.+(\..+) $1$2 [L]

# Add this line - consider security
RewriteRule ^(_Resources/Persistent/.{40})/.+ $1. [L]

И ответьте, почему это происходит — постоянные ресурсы по умолчанию хранятся в Data/Persistent/Resources/<hash> и у вас есть символическая ссылка от Web/_Resources/Persistent/<hash>.extension, Итак, стандартная символическая ссылка выглядит так:

0c73666545d393d3d2d6b5a2039dceab56fb3aa2.txt -> /www/FLOW/23/Data/Persistent/Resources/0c73666545d393d3d2d6b5a2039dceab56fb3aa2

Если файл не имеет расширения, в конце просто точка

a94a8fe5ccb19ba61c4c0873d391e987982fbbd3. -> /www/FLOW/23/Data/Persistent/Resources/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

Таким образом, на самом деле ссылка, возвращаемая ResourceViewHelper (FileSystemPublishingTarget), является правильной, но первое правило перезаписи выше требует расширения. Добавляя второй, вы ловите файлы без расширения и просто добавляете. в конце, чтобы найти правильную символьную ссылку с хешем и точкой в ​​конце.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]