파일 업로드를 하다보면 FormData에 append를 이용해 이것 저것 많은 데이터를 담아두게 된다.
그런데 아무리 해도 콘솔이 찍히지 않는다.
정녕 확인할 길이 없는걸까??
let formData = new FormData();
formData.append('image', formData);
console.log(formData); // putput : {}
for (let key of formData.keys()) {
console.log(key); // 모든 키 값을 추출 가능
}
// FormData의 value 확인
for (let value of formData.values()) {
console.log(value); // 모든 벨류를 추출 가능
}
console.log(typeof formData);
console.log(formData.values());
formData.values()
는 Iterator 라고 한다.[iterator란] 배열이나 유사한 자료 구조의 내부의 요소를 순회(traversing)하는 객체이다. -by Wiki-
: 그렇다. 제대로 해결은 못했지만... 그냥 프로토타입에 들어있는 내장 함수를 온전하게 사용하면 키, 값을 모두 얻어볼 수 있을 것이다.
몇개만 한번 써보자.
const [files, setFiles] = useState([]);
for (let i = 0; i < files.length; i++) {
formData.append('files', files[i]);
}
console.log(formData.get('files'));
get()
이라는 함수를 한번 써보았다. 파일을 한개 첨부하고 get 함수로 값을 추출해보니 담겨있었다. 값을 명확하게 가져오는 것을 확인할 수 있었다.console.log(formData.has('files'));
has()
를 써봤더니... 파일이 제대로 들어간 경우 true
, 들어가지 않은 경우 false
를 반환했다.console.log(formData.get('files'));
console.log(formData.delete('files'));
console.log(formData.has('files'));
delete()
를 사용했더니 has()
가 false
를 반환하는 것을 볼 수 있다.아직 콘솔이 불가한 이유에 대해서는 완벽히 찾아내지 못했다.
구글링에 있던 모든 방법들도 결국 프로토타입 내장 함수를 활용해서 콘솔을 찍어냈던 것이었다.
시간 날때 조금 더 찾아봐야겠다.