Following on from question comments.
可以在上运行筛选器
sanitize_file_name_chars
并将度符号添加到无效字符数组中,但它不会停止上载,只会删除文件扩展名。
但是,您可以添加另一个过滤器来阻止上传,这是一种黑客的方式,方法是额外挂接sanitize_file_name
在上面的一个之后不久发生的过滤器,您可以在那里查看文件扩展名是否存在,如果不存在,您就知道在无效的chars数组中有一个命中,您可以die()
在过滤器内部,这将导致上载过程返回HTTP错误(我想这比无声消亡要好)。
add_filter( \'sanitize_file_name_chars\', \'restrict_filename_chars\' );
function restrict_filename_chars( $special_chars ) {
$special_chars = array_merge( array( \'°\' ), $special_chars );
return $special_chars;
}
add_filter( \'sanitize_file_name\', \'die_on_no_ext\' );
function die_on_no_ext( $filename ) {
global $parts;
if( $parts < 2 )
die(-1);
return $filename;
}
请注意,这不是一个理想的解决方案,我们将看看票证会发生什么情况(我可能只是遗漏了一些东西,我不是文件验证方面的专家)。
NOTE: 过滤器仅确保实际文件名不包含学位符号,而不包含“职位名称”(即附件标题),您需要另一个过滤器来处理附件标题的清理,因为这是由不同的函数和过滤器处理的。