작성
·
59
0
김영한 강사님의 마지막 강의 끝쪽에서 uploadFIleName으로 하는 이유가 있나요 이게 고객이 저장한 업로드한 파일명을 인코딩하는 특별한 이유라도 있나여? 데이터베이스에서 uuid.png 이런 형태로 하는 거는 아예 안되는 거 맞나요??
답변 1
0
안녕하세요. 전한준님, 공식 서포터즈 y2gcoder입니다.
제가 전한준님의 질문을 제대로 이해한 것인지 모르겠습니다!
업로드한 파일에 대한 메타데이터를 저장할 때, 저장소에 저장된 파일명을 사용자가 업로드한 파일명과 다르게 하는 이유는 이름이 중복될 수 있기 때문입니다. 2024년 9월 1일에 업로드한 a.png와 2024년 9월 2일에 업로드한 a.png가 이름만 같을 뿐 다른 이미지라면 덮어씌워지면 안되기 때문에, 중복 확률이 매우 낮은 uuid와 같은 방법을 사용해 임의의 파일 이름로 해당 파일을 저장소에 업로드하고, 메타데이터에는 저장소에 업로드한 파일명과, 사용자가 업로드할 때의 파일명을 같이 저장해두는 것입니다.
그리고 사용자는 서버단에서 만든 임의의 파일명보다는 자신이 업로드할 때의 파일명을 기억하거나, 그 이름으로 업로드한 파일을 다운로드 받고 싶어하는 경우가 많습니다. 이를 위해 사용자가 업로드한 파일명을 메타데이터로 저장해두었다가, 실제로 파일을 다운로드받을 때 해당 파일명으로 파일을 다운로드받을 수 있도록 처리해주는 것입니다!
파일명을 인코딩하는 이유는 파일명에 비 ASCII 문자가 포함될 경우, 일부 브라우저나 클라이언트가 파일명을 잘못 해석하거나 깨진 문자로 표시할 수 있기 때문인 점과 파일명에 공백, 특수 문자, 또는 URL에서 사용되는 예약 문자가 포함되어 있을 경우, 이들이 URL의 다른 부분과 충돌을 일으킬 수 있기 때문인 점 때문에 그렇습니다!
감사합니다.