//ul에 각각 i가 들어오면 obj로 처리하고 넣어준다.
$(uploadResultArr).each(function(i, obj){
if(obj.image){
var fileCallPath = encodeURIComponent( obj.uploadPath + "/s_" + obj.uuid + "_" + obj.fileName);
jQuery의 each 메서드
- each() 메서드는 매개 변수로 받은 것을 사용해서 반복문과 같이 배열이나 객체 요소를 검사할 수 있는 메서드이다.
일반적인 반복 함수, 배열과 length 속성을 갖는 배열과 유사 배열 객체들을 index를 기준으로 반복 가능
encodeURIComponent()
- encodeURIComponent() 함수는 URI의 특정한 문자를 UTF-8로 인코딩해 하나, 둘, 셋, 혹은 네 개의 연속된 이스케이프 문자(\n\d등등) 로 나타냄.
var fileLink = fileCallPath.replace(new RegExp(/\\/g), "/");
fileLink는 왜 모든 \\를 "/"로 바꿀까? Why?
이것은 파일이 저장되는 경로는 \\가 되고,URI로 출력할때는 "/"를 통해서 출력하기 때문
var targetFile = $(this).data("file");
var type = $(this).data("type");
var targetLi = $(this).closest("li");
$.ajax({
url : '/deleteFile',
data : {fileName : targetFile, type: type},
dataType : 'text',
type : 'POST',
success: function(result){
alert(result);
targetLi.remove();
}
}); //$.ajax
$(this)를 이용해서 data-type의 각각의 동적 객체들을 접근하고
ajax 통신을 통해서 삭제 버튼을 클릭하면 해당되는 객체들과 해당 부모의 <li> 태그를 삭제해준다.
$(".uploadResult ul li").each(function(i, obj){
var jobj = $(obj);
console.dir(jobj);
});
each를 이용해서 obj를 반복해주는데
console.log가 아닌 console.dir이 있었다.
Why did dir()?
console.dir()은 지정된 객체의 속성에 대한 대화식 목록을 표시
출력은 하위 객체의 내용 펼침, 삼각형이 있는 계층 구조 목록으로 표시
console에도 다양한 메서드가 존재한다.
트랜잭션 처리가 필요하다.
두 테이블 모두 insert 해줘야 하기 때문...
게시판 첨부 파일을 보내는 과정에서 에러가 난다.
현재 tbl_attach 테이블은
filetype을 defualt로 'I'가 되어있고 char(1) 까지만 허용한다.
근데 지금 register.jsp를 살펴보면 이미지가 있거나 없거나 들어오는 값은 true, false가 된다.
문제 해결!
@Data
public class BoardAttachVO {
private String uuid;
private String uploadPath;
private String fileName;
private boolean fileType;
private Long bno;
}
게시글의 value object의 fileType이 원래는 String으로 되어있었다!!
그러므로 db에서 값을 받을때 String으로 받아서 maximum오류가 떴던 것..
근데 여전히 fileName은 찾지 못하는 문제가 발생.. 아무래도 인코딩이나 디코딩 과정에서 문제가 생겼을 것 같다.
data-속성은 뒤에 소문자로 처리해야지 읽을 수 있다.
input의 hidden으로 li 태그들의 객체를 받아서 보내주는 부분에서 fileName이라고 적었기 때문에 undefined가 되었다..
즉시 실행 함수
즉시 실행 함수의 기본 형태는 다음과 같다.
(function () {
//statements
})()
함수 표현은 함수를 정의하고, 변수에 함수를 저장하고 실행하는 과정을 거친다. but 즉시 실행 함수는 함수를 정의하고 바로 실행하여 이러한 과정을 거치지 않는 특징이 있습니다. 함수를 정의하자마자 바로 호출하는 것이 즉시 실행 함수
게시물 삭제할 때 생각해야 되는 것
DB삭제 + 실제 폴더에서 삭제 돼야함.
만약에 게시글 삭제되면 ? 첨부 파일도 같이 삭제가 되어야함
그러면 구현해준 로직에서 remove를 수정한다.
DB를 삭제하고,그 이후에 파일을 삭제해야 된다.(이미지 파일의 경우 섬네일 처리가 되어 있기 때문에 썸네일 또한 삭제)
deleteIfExists()
파일이 존재하는 경우 파일 삭제,
파일이 존재하지 않는 경우에 파일 삭제하지 않고, false를 리턴
delete()의 경우에는, 파일이 존재 하지 않는 경우 NoSuchFileException이 발생하지만, deleteIfExists()의 경우에는 Exception이 발생하지 않습니다.
'Spring' 카테고리의 다른 글
스프링 : 첨부파일 구현 (0) | 2021.11.11 |
---|---|
스프링 : 게시판 카테고리 효과 (0) | 2021.11.11 |
스프링 : 댓글 에러 해결 (1) | 2021.11.09 |
스프링 : 섬네일 이미지 생성 (0) | 2021.11.07 |
스프링 : 파일 업로드 시 생각해야 될것(+ 사용방법) (0) | 2021.11.05 |