Spring 파일업로드3
파일 업로드 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>
댓글남기기