Vue
[VUE] 파일 첨부 > 같은 파일 첨부 - 배열 비워주기!
페루나쵸
2023. 9. 25. 14:10
for (var pair of formData.entries()) {
console.log(pair[0] + ': ' + pair[1]);
}
상황:
입력 모달창 오픈 > 파일 찾기 a파일 첨부 > 등록하지 않고 모달창 닫기
모달창 오픈 > 파일 찾기 a파일 첨부 :: 이 때 문제 발생
나는 부트스트랩을 사용하고 있었고, 부트스트랩뷰가 아닌 뷰로 쓰고 있었는데
제대로 들어갔는지 확인하려고 찍어본 부분이다
var formData = new FormData();
formData.append('data', JSON.stringify(this.form));
$.each(this.file, function (idx, data) {
formData.append('fileId', data);
});
위 코드는 여러개의 파일인 경우 쓰는 방법인데,
<FormData는 웹 애플리케이션에서 폼 데이터를 쉽게 생성하고 제어할 수 있는 인터페이스입니다. 이를 사용하여 폼 필드와 해당 값을 캡처하고, 이 데이터를 서버로 전송하거나 다른 작업을 수행할 수 있습니다.라고 챗 GPT가 알려줌>
출처 입력
나는 하나의 파일만 쓸거라서
let self = this;
let tepFile= this.$refs.ref이름.files[0]; // 첫 번째 파일만 처리
self.file = tepFile; // 파일을 덮어씁니다.
this.$refs.ref이름.value = ''
이렇게 하여 임시 변수에 0번째 파일을 저장해주었고,
내가 쓰는 변수에 다시 저장해주었다
: 임시 변수에서 지역 데이터변수에 저장해준 이유는 파일 유효성 검사 체크를 했기 때문이었는데 지금 생각해보면 안해도 됐을 것 같기도 하고..
무튼 파일 검사끝나고 나서는 refs에 있는걸 비워줘야 함
파일 첨부는 보통 change를 사용하는데, change는 같은 파일을 연속으로 올리는 경우에 처리를 해주지 않음