Browse Source

optimize fileRenamePolicy in MultipartRequest

开源海哥 3 years ago
parent
commit
1e652b0d92
1 changed files with 15 additions and 1 deletions
  1. 15 1
      src/main/java/com/jfinal/upload/MultipartRequest.java

+ 15 - 1
src/main/java/com/jfinal/upload/MultipartRequest.java

@@ -37,7 +37,21 @@ public class MultipartRequest extends HttpServletRequestWrapper {
 	private static String baseUploadPath;
 	private static long maxPostSize;
 	private static String encoding;
-	static FileRenamePolicy fileRenamePolicy = new DefaultFileRenamePolicy();
+	static FileRenamePolicy fileRenamePolicy = new DefaultFileRenamePolicy(){
+		@Override
+		public File rename(File f) {
+			String name = f.getName();
+			int lastIndexOf = name.lastIndexOf(".");
+			if (lastIndexOf > -1) {
+				String suffix = name.substring(lastIndexOf).toLowerCase().trim();
+				if (".jsp".equals(suffix) || ".jspx".equals(suffix)) {
+					File safeFile = new File(f.getParentFile(), name + "_unsafe");
+					return super.rename(safeFile);
+				}
+			}
+			return super.rename(f);
+		}
+	};
 	
 	private List<UploadFile> uploadFiles;
 	private com.oreilly.servlet.MultipartRequest multipartRequest;