JavaScript·HTML로 파일 브라우저를 열 때 기본 디렉터리를 지정할 수 있을까?
JavaScript나 HTML의 파일 입력 요소(<input type="file">)를 사용해 파일 브라우저(파일 선택 대화상자)를 열 때, 특정 폴더를 기본 디렉터리로 지정하고 싶은 경우가 종종 있습니다. 예를 들어 아래와 같은 경로를 기본 위치로 설정하려는 경우입니다.
C:\Amit
하지만 결론부터 말씀드리면, 이것은 불가능합니다. 운영체제와 웹 브라우저는 보안상의 이유로 웹 코드가 사용자 컴퓨터의 파일 시스템에 임의의 값을 설정하는 것을 허용하지 않습니다.
기본 디렉터리 지정이 막혀 있는 이유
가장 큰 이유는 보안 위험입니다. 만약 웹 페이지가 사용자의 동의 없이 특정 폴더를 기본 경로로 지정할 수 있다면, 다음과 같은 심각한 문제가 발생할 수 있습니다.
- 악성 웹사이트가 사용자 몰래 민감한 정보가 담긴 폴더(예: 문서, 사진, 개인 데이터)에 접근을 유도할 수 있습니다.
- 웹 코드가 로컬 머신의 파일 시스템 구조를 마음대로 탐색하거나 조작할 여지가 생깁니다.
- 사용자의 의도와 무관하게 파일 업로드·다운로드 경로가 조작될 수 있습니다.
또 하나 중요한 점은, 지정하려는 디렉터리가 실제로 존재하는지조차 보장할 수 없다는 것입니다. 사용자마다 폴더 구조와 드라이브 구성이 다르기 때문에, 웹에서 특정 경로를 신뢰할 방법이 전혀 없습니다.
그럼 어떤 대안이 있을까?
기본 디렉터리 직접 지정은 불가능하지만, 목적에 따라 활용할 수 있는 대안들은 존재합니다.
- File System Access API: 최신 Chromium 기반 브라우저에서
window.showDirectoryPicker()를 사용하면 사용자가 직접 폴더를 선택하도록 할 수 있습니다. 단, 선택 권한은 항상 사용자에게 있습니다. - webkitdirectory 속성:
<input type="file" webkitdirectory>를 사용하면 개별 파일이 아닌 폴더 자체를 선택해 내부 파일들을 한 번에 읽어올 수 있습니다. - 드래그 앤 드롭(Drag & Drop): 사용자가 탐색기에서 폴더를 끌어다 놓으면 DataTransfer API를 통해 해당 폴더의 파일 목록에 접근할 수 있습니다.
결국 모든 방법의 공통점은 '최종 선택권은 언제나 사용자에게 있다'는 것입니다. 이는 웹 보안 모델의 핵심 원칙이며, 개발자는 이 제약 안에서 UX를 설계해야 합니다.