上传文件时怎么对文件名进行限制,不能含有特殊字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上传文件时怎么对文件名进行限制,不能含有特殊字符相关的知识,希望对你有一定的参考价值。

参考技术A indows文件名中不能有下列符号:“?”、“、”、“╲”、“/”、“*”、““”、“”“、“”、“|”。
详细命名规则如下:
1、允许文件或者文件夹名称不得超过255个字符;
2、
文件名除了开头之外任何地方都可以使用空格;
3、文件名中不能有下列符号:“?”、“、”、“╲...

删除文件名含有特殊字符的文件时的意外发现

首先介绍一下删除文件名含有特殊字符的文件的方法:

Linux 系统下的文件名长度最多可到256个字符。通常情况下,文件名的字符包括:字母、数字、“.”(点)、“_”(下划线)和“-”(连字符)。Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议用户这样做。 有些转意字符 (即该字符被系统借用,表示某种特殊含义) 在 Linux 的 命令解释器(shell)中有特殊的含义。这样的转意字符有:“?”(问号),“*”(星号), “ ”(空格), “$”(货币符), “&”, 扩号等等。在文件名中应尽量避免使用这些字符。文件名中可以有“ ”(空格),但建议用户用“_”(下划线)来替代。“/” 既可代表目录树的根也可作为路径名中的分隔符(类似DOS下的“\”),因此“/“不能出现在文件名中。   和 DOS 一样,“.” 和 “..”分别用来表示“当前目录”和“父目录”, 因此它们也不能作为文件名。

1. 文件名含有特殊字符,直接使用 rm 可能删除不了,可以使用如下方法:
1) 使用 ls -i 查处该文件的 inode 号,假设为654321
2) 使用find命令删除    

  find ./ -inum 654321 -ok rm ‘{}‘ \;

2. 如果文件名是以 - 连字符开头的,可以使用如下方法来删除,如删除 "-filename" 文件:

  rm -- -filename

  rm ./-filename

我遇到的问题:

aria2下载目录中发现如下异常文件

/opt/share/data# ll
drwxrwxrwx    2 root     root          4096 Mar 23 08:09 aria2/
drwxrwxrwx    2 root     root          4096 Mar 23 14:18 /
-rw-rw-rw-    1 root     root           234 Mar 23 14:41

一个命名为“/”,一个命名为空或者空格

这个不敢通过一般语法和上述方法直接尝试删除,只能首先尝试使用cp进行测试,未果。

当测试到ls -i * 的时候。忽然发现如下内容:

飞鸟娱乐(bbs.wofei.net).超人归来.720P.中英字幕:
  66619 -rw-rw-rw-    1 root     root             0 Mar 23 14:18 [email protected]
  66627 -rw-rw-rw-    1 root     root             0 Mar 23 14:18

原来这些异常符号是中文出现了乱码造成的。

修改系统环境变量支持中文后问题解决。

以上是关于上传文件时怎么对文件名进行限制,不能含有特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

我的记事本不能保存文件,请问是怎么回事

百度网盘中文件超出大小4G限制,请至PC客户端上传大文件什么意思?

文件夹提示含有非法字符 但是检查了并没有怎么解决?

dom4j解析标签名中含有特殊字符报错

启动游戏失败,请检查安装路径是不是过长或含有特殊字符

急!C# 从文件名里去处特殊字符