작성
·
277
0
앞에 질문했던 내용인데 제가 이해를 너무 못한 상태에서 질문드려서 답글을 못달아주신거 같습니다. ㅠㅠ
파일업로드 관련해서 여러번 다시 들어보고 질문 드립니다!!
궁금한 점이
클라이언트가 회원가입시 등록한 파일첨부 한 것
1. request //클라이언트로부터 넘어온 것
2. File uploadFile = new File(currentDirPath+"\\"+fileName); //임시공간
3.fileItem.write(uploadFile); //실제경로쓰기
이 세가지 단계를 통해서 실제 경로에 옮겨지는 것이라고 이해 했습니다
궁금한 점이 파일에는 용량이라는게 있는데 그 데이터가 실제로 이동을 하는 것은 2번 3번 단계 뿐이고 request 는 그냥 참조만 할 뿐인가요?
강의 내용 중에 List<FileItem> items = upload.parseRequest(request); 로 request에 담겨져있는 파일을 읽어온다고 하셨는데 이때도 실제 데이터가 이동한건가요 ? 아니면 파일이름이나 이런 겉가지 정보들만 가져오는 건가요?
★실제 용량이 있는 파일★의 흐름이 어떻게 이루어지는지 간략하게라도 이해시켜주실수 있을까요?!
reqeust라는 객체에 실제로 (몇 메가의 파일 같은 것이 실제로 옮겨지면서) 들어가게 되는건지 아니면 2번 과정 전까지(배열로 파일들을 items로 가져오고 등등)는 그저 가르키고만 있는 과정들인건지.. 잘 모르겠습니다.
클라이언트 페이지 하실때
formData.append("file", $("input[name=file]")[0].files[0]); ajax 함수 안에서도 파일을 넣는다고 표현하셨는데
이 용량있는 파일 데이터가 formData로 이동했다가 request로 또 이동했다가 하는건지도 잘 모르겠습니다..
항상 잘 답변해주셔서 감사합니다. ㅠㅠㅠ
답변 2
0
request객체안에 파일정보가 저장되어 있습니다. 파일도 폼에서 서버로 넘기면 바이트 데이터가 패킷의 바디(body)에 포함되서 서버로 넘어가서 request에 파일정보와 데이터가 들어있다고 보시면됩니다. ajax로 전송해도 동일한 방식입니다.
서버로 전달된 파일정보가 여러개일수있어서 items로 하나씩 파일정보를 빼내서 먼저 파일이름으로 빈파일을 생성하고 (2번) items에 저장된 실제파일 데이터를 2번에서 만든 파일경로에 해당 파일을 (3번)쓰는(write)것입니다.
이해가 되셨을까요?
0
감사합니다 ㅠㅠㅠ !!