파일 업로드 3

파일삭제버튼 추가

넘어온 파라미터들이 인코딩된 상태이기 때문에 자바에서 디코딩을 해주어야 한다

	// 파일삭제
	@PostMapping("/deleteFile")
	@ResponseBody
	// 파라미터의 경우는 ajax의 data에 있는 파라미터를 넣는다
	public ResponseEntity<String> deleteFile(String fileName, String type){
		ResponseEntity<String> entity = null;
		
		log.info("deleteFile : " + fileName);
		
		File file;
		
		// fileName이 인코딩된 주소처럼 그대로 들어온다
		// 고로, 자바에서 디코딩을 해줘야함
		// URLDecoder.decode(fileName, "UTF-8") : 예외를 발생
		try {
			file = new File("C:\\Dev\\upload\\" + URLDecoder.decode(fileName, "UTF-8"));
			
			file.delete(); // 일반파일 또는 섬네일이미지가 삭제
			
			if(type.equals("image")) { // 원본이미지파일 삭제
				String originFileName = file.getAbsolutePath().replaceAll("s_", ""); // s_를 제외한 원본이미지명
				
				log.info("originFileName : " + originFileName);
				
				file = new File(originFileName);
				
				file.delete(); // 예외발생되지 않는다
				
				return new ResponseEntity<String>("success", HttpStatus.OK);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
			
		}
		
		
		
		return entity;
	}
<script>
	    // 파일 삭제
        $(".uploadResult").on("click", "span", function(){

            console.log("span안에 삭제 이벤트");

            //<span data-file="파일명" data-type="image">

            let targetFile = $(this).data("file");
            let type = $(this).data("type");

            console.log("파일명 : " + targetFile);
            console.log("파일형식 : " + type);

            $.ajax({
                url: 'deleteFile',
                data: {fileName:targetFile, type:type}, // 지바스크립트 object 구문
                dataType: 'text',
                type: 'post',
                success:function(result){
                    alert(result);
                },
                error:function(result){
                    alert(error);
                }
            });

        });
</script>

댓글남기기