我正在处理覆盖问题,我需要验证文件名 在java中使用regEx。在我的应用程序支持.pdf,.txt,csv等。我的 文件名从用户获取为xxx.txt。我想验证我的文件名 具有适当的扩展格式,不包括任何特殊字符 比点(例如.txt)。
filePath = properties.getProperty("DOCUMENT.LIBRARY.LOCATION");
String fileName = (String) request.getParameter("read");
仅当文件路径完成其正确验证时,以下代码才有效。
filePath += "/" + fileName;
答案 0 :(得分:0)
if (fileName.endsWith(".pdf")) {
// do something
}
或使用方法String.matches()
fileName.matches("\\.(pdf|txt|csv)$")
答案 1 :(得分:0)
这是一个可怕的答案,因为它只验证文件名以所需的扩展名结尾,但不验证原始问题中请求的文件名的其余部分。更像这样的东西会更好:
fileName.matches("[^/\]+\\.(pdf|txt|csv)");
这确保文件名仅包含一个或多个 - ,_,PERIOD,SPACE或字母数字字符,后跟文件名末尾的.pdf,.txt或.csv中的一个。您的系统可能允许文件名中的其他字符,如果需要,您可以将它们添加到此列表中。另一种不太安全的方法是防止“不良”。字符之类的东西:
/myapp
这只是在所需的结束扩展名之前阻止/或\字符在文件名中。但是,这并不能防止其他危险字符,例如NULL字节。