【发布时间】:2013-08-20 19:00:06
【问题描述】:
在CQ5上使用CRXDE lite或其他UI界面上传文件(以dam文件夹为例)时,如果上传的文件有无效字符,系统会报错。
我刚刚发现 [ 和 ] 不允许作为文件名的一部分。
但是当使用非UI界面上传文件时,例如SlingPostServlet,字符[被替换为百分比编码表示(%5D)并且没有产生错误。
是否有某种列表/文档可以显示 CQ5 中不允许使用的字符?
我正在使用 CQ5.4
谢谢
【问题讨论】:
在CQ5上使用CRXDE lite或其他UI界面上传文件(以dam文件夹为例)时,如果上传的文件有无效字符,系统会报错。
我刚刚发现 [ 和 ] 不允许作为文件名的一部分。
但是当使用非UI界面上传文件时,例如SlingPostServlet,字符[被替换为百分比编码表示(%5D)并且没有产生错误。
是否有某种列表/文档可以显示 CQ5 中不允许使用的字符?
我正在使用 CQ5.4
谢谢
【问题讨论】:
JCR 命名限制在 JCR 规范的 Repository Model 部分中描述。
具体来说,不允许使用以下字符:
(“/”, “:”, “[“, “]”, “|”, “*”)
有一个 com.day.cq.commons.jcr.JcrUtil 类有一个 createValidName(title) 方法,它可以帮助你。默认情况下,STANDARD_LABEL_CHAR_MAPPING 将用下划线替换所有非法字符。可以使用createValidName(title, labelCharMapping[]) 方法将HYPHEN_LABEL_CHAR_MAPPING 替换为连字符。
【讨论】:
AEM 后端的coral-ui 使用的客户端库使用以下正则表达式进行过滤:
_ILLEGAL_FILENAME_REGEX: /[\".%/\:*?[]|\n\t\r ]|[\x7f-\uffff]/g
这是一个示例:
var text = "äüö?abcdefghijklmnopqrstuvwxyz!\"§$%&/()=?´`+*#'-_.:,;<>^°";
var regex = /[\"\.%/\\:*?\[\]|\n\t\r ]|[\x7f-\uffff]/g;
console.log(text.toLowerCase().replace(regex, '-'));
【讨论】: