Silverstripe:上传带有西里尔文名称的文件时出现问题

时间:2016-05-26 07:59:38

标签: silverstripe

当我在带有西里尔字母名称的CMS文件中上传时,西里尔符号就会消失。 例如:文件名“мой_файл.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=---

在帖子标签显示:

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

请给我任何帮助。

1 个答案:

答案 0 :(得分:1)

看看FileNameFilter,因为这是"清理"的逻辑。传入/上传的文件名。

具体看看它的$default_replacements private(config)静态。因为它是私有静态,所以可以在userland(自定义)YML配置中进行修改。

相关专栏甚至为您评论:

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

在您自己的自定义YML配置中使用适合您系统可接受的字符范围的内容覆盖此内容。