2016-03-23 10 views
2

Wir verwenden das integrierte Ressourcenobjekt TYPO3 Flow 2.3, um beliebige Dateien in unser Projekt hochzuladen. Die Definition in unserem File Objekt ist:Sind TYPO3 Flow-Ressourcen ohne Ende erlaubt?

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

Und die Flüssigkeit Anruf geht so:

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

Alles in dieser Konstellation funktioniert gut, bis ein Benutzer eine Datei hochgeladen, ohne wie hosts endet. Der Server sagt Not Found in der regulären Apache-Fehlermeldung. Werden Dateien ohne Endungen unterstützt oder nicht? Warum passiert das?

Die Einstellung ist:

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/' 

und die erzeugte symbolische Verknüpfung für die hosts Datei in _Resources/Persistent/ wird mit dem Hash-Namen und dann einen Punkt ohne Datei zeigt die Beendigung der die eigentliche Datei. Die eigentliche Datei existiert.

Antwort

2

Es ist ein Fehler und Sie können es hier melden: https://jira.neos.io/

In Fluss 3.x es funktioniert gut, aber es gab große Veränderungen mit Ressourcenmanagement.

Hinzufügen einer Zeile zu Web /. Htaccess sollte das Problem lösen, aber ich kann nicht sagen, es ist die beste Lösung.

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

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

Und beantworten, warum es passiert - persistent Ressourcen standardmäßig gespeichert werden, in Data/Persistent/Resources/<hash> und in Ihnen Symlink haben es von Web/_Resources/Persistent/<hash>.extension. So Standard Symlink sieht wie folgt aus:

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

Wenn die Datei keine Erweiterung hat dort dot nur am Ende

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

Also in der Tat zurück Link von ResourceViewHelper (FileSystemPublishingTarget) ist richtig, aber erste Überschreibregel oben erfordert Erweiterung. Wenn Sie die zweite Datei hinzufügen, fangen Sie Dateien ohne Erweiterung und fügen einfach hinzu. am Ende den richtigen Symlink mit Hash und Punkt am Ende übereinstimmen.

+0

Sie empfehlen also, auf Version 3.x zu aktualisieren? – Pete

+0

Es liegt an Ihnen und hängt von Ihrem Projekt ab. Ich benutze 3.x in meinem aktuellen Projekt, aber ich habe das vorherige noch nicht aktualisiert. Überprüfen Sie [was geändert wurde] (http://flowframework.readthedocs.org/en/stable/TheDefinitiveGuide/PartV/ReleaseNotes/300.html) - spielen Sie damit und entscheiden Sie. Änderungen in der Ressourcenverwaltung, im Sicherheitsframework und das Hinzufügen von Unterstützung für php7 sprechen für 3.x und das Upgrade sollte nicht schwierig sein. Aber jetzt sollte diese eine Zeile in .htaccess dein Problem lösen. –

Verwandte Themen