答案 0 :(得分:0)
根据您存储文件的方式,您可以使用简单的preg_replace()删除所有非字母数字字符,然后您就不必担心了。
$name1 = preg_replace('~[^a-z0-9_-]~i', '', $_FILES['FileName']['name']);
等待我没有犯任何愚蠢的错误。
如果要将名称存储在数据库中,您只需将实际文件名设为md5哈希值,并在表格中引用该信息即可存储。
答案 1 :(得分:0)
引号在许多系统中充当特殊字符 - 您可能想要清理文件名 - 例如将一组字符列入白名单并删除其他字符:
$name1=$_FILES['FileName']['name'];
$up=uniqid() . preg_preplace('/[^a-zA-Z0-9_-]/','',$name1);
作为奖励,这可以为您提供针对无效文件名和目录遍历攻击的弹性(例如,攻击者会给出“../../../../../../../。 ./etc/passwd“作为文件名。)