2016-05-26 10 views
0

キリル文字のCMSファイルにアップロードすると、キリル文字が消えるだけです。 例:filename "мой_файл.txt"は "мой_файл"を除いた "txt"になります。 ファイル名にはwindows-1251エンコーディングがあります。シルバーストライプ:キリル文字のファイルをアップロードする際の問題

Firebugのは示しています

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=--- 

とPOST]タブでは示しています

Content-Disposition: form-data; name="SecurityID" 
4754dec1aad707dd63e8cc58c8e469d0bc149425 
-----------------------------81762142719766 
Content-Disposition: form-data; name="Projects[Uploads][]"; filename="мой_Ñайл.txt"** 
Content-Type: text/plain 
ïîëïîïîïîïîïîïîîûûûûûûû 
-----------------------------81762142719766-- 

私に任意のヘルプをお願いします。

答えて

1

これは、受信/アップロードされたファイル名を "クリーンアップ"するロジックであるので、FileNameFilterを見てください。

具体的には、その$default_replacementsプライベート(設定)スタティックを見てください。それはプライベートスタティックなので、ユーザーランド(カスタム)YML設定で変更できます。

該当する行

も、あなたのためにコメントしている:あなたのシステムが受け入れる文字の範囲に合った何かを使用して独自のカスタムYMLの設定で

// remove non-ASCII chars, only allow alphanumeric plus dash and dot 

オーバーライドこれを。

+0

私は 'FileNameFilter config.ymlに追加:/は/ usr /家庭でforeachのために供給無効な引数():キャッシュマニフェスト(フラッシュ=すべて)と受け取っ'警告をクリアし、 ' : default_use_transliterator:偽 default_replacementsをsmolin/silver/framework/core/manifest/ConfigManifest.php on line 655'を参照してください。 FileNameFilterの動作は変更されませんでした – alex

+0

[この記事](http://stackoverflow.com/questions/36944404/silverstripe-3-1-change-filenamefilter-default-replacements)と同じ状況 – alex

+0

本当に ' default_replacements'を右に置いておかないと、そのエラーは間違いなくSPLがあなたの無効なYMLを解析していないことになります。あなたのシステムの要件(すなわち、キリル文字を含む)に基づいて、コアの 'FileNameFilter'にあるASCII固有のエントリを独自の正規表現で*置き換える*必要があります。あなたがしたことは、 'default_replacements'配列を"空 "として再定義し、PHPエラーを引き起こすことです。 – theruss

関連する問題