Wenn ich CMS-Dateien mit kyrillischen Namen hochlade, verschwinden kyrillische Symbole einfach. Zum Beispiel: Dateiname "мой_файл.txt" wird nur "txt" ohne "мой_файл." Dateiname hat Windows-1251-Codierung.Silverstripe: Probleme beim Hochladen von Dateien mit kyrillischen Namen
Firebug zeigt:
POST /admin/projects/Project/EditForm/field/Project/item/6/ItemEditForm/field/Projects/upload HTTP/1.1
Host: silver.rivreg.ru
User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Referer: http://silver.rivreg.ru/admin/projects/Project/EditForm/field/Project/item/6/edit
Content-Length: 377
Content-Type: multipart/form-data; boundary=---
Und bei der Post Registerkarte zeigt:
Content-Disposition: form-data; name="SecurityID"
4754dec1aad707dd63e8cc58c8e469d0bc149425
-----------------------------81762142719766
Content-Disposition: form-data; name="Projects[Uploads][]"; filename="мой_Ñайл.txt"**
Content-Type: text/plain
ïîëïîïîïîïîïîïîîûûûûûûû
-----------------------------81762142719766--
Bitte geben Sie mir jede Hilfe.
Ich habe 'Filenamen config.yml: default_use_transliterator: false default_replacements:' , räumte die Cache Manifest (Flush = all) und erhielt 'Achtung: Invalid argument für foreach geliefert() in/usr/home/smolin/silber/framework/core/manifest/ConfigManifest.php in Zeile 655'. Das Verhalten von FileNameFilter hat sich nicht geändert – alex
Die gleiche Situation wie in [dieser Beitrag] (http://stackoverflow.com/questions/36944404/silverstripe-3-1-change-filenamefilter-default-replacements) – alex
Wenn Sie wirklich definiert ' default_replacements "ohne etwas auf der rechten Seite, dann ist es fast sicher, dass SPL die ungültige YML nicht analysiert. Sie müssen * den ASCII-spezifischen Eintrag, der in 'FileNameFilter' des Kerns gefunden wird, durch Ihre eigene Regex ersetzen, basierend auf den Anforderungen Ihres Systems (d. H. Um kyrillische Zeichen einzuschließen). Alles, was Sie getan haben, ist, das default_replacements-Array als "leer" neu zu definieren und einen PHP-Fehler zu verursachen. – theruss