Spring REST _ 파일 업로드 정규식 (실행 파일 거르기)

dwanGim·2022년 7월 11일
0

spring_basic

목록 보기
37/41

파일 업로드 정규식

파일 확장자 중 exe, sh, zip, alz와 같은 실행파일 확장자를 거르고

파일 크기도 제한을 걸도록 하고 싶을 때.

ajax 파일을 검문하는 정규식이 필요합니다.

jsp 파일 내부에 한 번 작성해보고 테스트 해보도록 하겠습니다.

	<script>
	
		$(document).ready(function () {
			
			let regex = new RegExp("(.*?)\.(exe|sh|zip|alz)$");
			
			let maxSize = 5242880; // 5MB
			
			function checkExtension(fileName, fileSize) {
				
				if(fileSize >= maxSize) {
					alert("파일 사이즈 초과");
					return false;
				}
				
				if(regex.test(fileName)) {
					alert("해당 종류 파일 업로드는 지원하지 않습니다.");
					return false;
				}
				
				return true;
			} // checkExtension END
			
			

uploadAjax.jsp 내부에 있었던 함수 내부의 최상단에

위와 같은 정규표현식 checkExtension을 추가했습니다.

이후 formData에 파일들을 적재하기 전에

checkExtension을 if(!a)문에 걸어서

만약 return false가 돌아온다면 온클릭 이벤트 함수에도

return false를 걸도록 해주었습니다.

위와 같이 서버에서 확인 했을 때 checkExtension이 검증을 해주면

고맙게도 잘 작동하고 있는 겁니다.

	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
	
	<script>
	
		$(document).ready(function () {
			
			let regex = new RegExp("(.*?)\.(exe|sh|zip|alz)$");
			
			let maxSize = 5242880; // 5MB
			
			function checkExtension(fileName, fileSize) {
				
				if(fileSize >= maxSize) {
					alert("파일 사이즈 초과");
					return false;
				}
				
				if(regex.test(fileName)) {
					alert("해당 종류 파일 업로드는 지원하지 않습니다.");
					return false;
				}
				
				return true;
			} // checkExtension END
			
			
			
			$('#uploadBtn').on("click", function(e){ 
				
				let formData = new FormData();
				
				console.log("------빈 폼 생성 체크-----");
				console.log(formData);
				
				let inputFile = $("input[name='uploadFile']");
				
				console.log("------보내진 파일 목록 체크 -----");
				console.log(inputFile);
				
				let files = inputFile[0].files;
				
				console.log("------파일들만 뽑아서 체크-----");
				console.log(files);
				
				
				for(let i=0; i < files.length; i++) {
					
					if(!checkExtension(files[i].name, files[i].size)){
						return false;
					}
					
				}// checkExtension 검증
				
				
				for(let i = 0; i < files.length; i++) {
					
					formData.append("uploadFile", files[i]);

				}
				
				console.log("------파일 적재 후 formData 확인-------");
				console.log(formData);
				
				$.ajax({
					
					url: '/uploadAjaxAction',
					processData: false,
					contentType: false,
					data: formData,
					type: 'POST',
					success: function(result) {
						alert("Upload 성공");
					}
					
				}); // ajax END
				
				
			}); // uploadBtn onclick
			
		}); //ready function END
	
	</script>

jsp 파일 스크립트 전문입니다.

profile
배울 게 참 많네요.

0개의 댓글