웹에서 Javascript 만으로 텍스트 파일 읽기

웹에서 JS 언어만으로 로컬에 저장된 텍스트 파일을 읽어 오는 코드를 정리한 글이다. 먼저 아래는 예제 코드 실행을 위한 DOM 구성에 대한 코드이다.


...

Open 버튼을 클릭하면 텍스트 파일을 선택할 수 있는 대화상자가 표시되도록 하며, 여기서 읽고자 하는 파일을 사용자가 선택하면 id가 output인 div에 텍스트 파일의 내용을 출력한다. 이에 대한 코드는 아래와 같다.

function openTextFile() {
    var input = document.createElement("input");

    input.type = "file";
    input.accept = "text/plain"; // 확장자가 xxx, yyy 일때, ".xxx, .yyy"

    input.onchange = function (event) {
        processFile(event.target.files[0]);
    };

    input.click();
}

function processFile(file) {
    var reader = new FileReader();

    reader.onload = function () {
        output.innerText = reader.result;
    };

    reader.readAsText(file, /* optional */ "euc-kr");
}

openTextFile은 Open 버튼 클릭시 호출하는 함수이다. processFile은 openTextFile에서 호출되는 함수로 선택된 파일을 읽어 div에 그 내용을 출력한다. IE와 Chrome 모두에서 정상적으로 작동하는 것을 확인했다.

“웹에서 Javascript 만으로 텍스트 파일 읽기”에 대한 9개의 댓글

  1. 알려주신 예제로 잘 활용하였습니다.
    그런데 pdf파일에서 text만 불러와서 보여주는 방법을 없을지요?

  2. 매우 유익한 자료 감사 드리며 한가지 문의 드립니다…
    제가 구현 하고 싶은 내용은 파일을 선택하는게 아니고
    onclick=fun(DB 에서 읽어온 전체경로_파일명) 을 전달하여 처리하고 싶은데
    초짜라 쉽지가 않네요…도움 부탁 드립니다

    1. 안녕하세요, 김형준입니다.
      로컬 파일을 웹에서 읽는 것은 사용자가 직접 자신의 손가락이든.. 발가락이든 마우스(터치 포함) 또는 키보드를 통해 선택하는 행위를 필요로 한다가.. 현재의 웹 보안정책입니다..
      즉, 문의하신것처럼 단순히 파일경로를 문자열로 지정하는 것은 보안정책에 위배되는 것이므로 불가능합니다람쥐..

  3. 좋은 정보 감사합니다! 궁금한게 있습니다. read한 file을 split하여서 출력도 할 수 있나요? output값에 split해도 안되네요..

  4. 안녕하세요! 작성해주신 코드를 참고하여 text를 읽어왔고
    읽어온 text파일에 적힌 내용들을 substring으로 잘라
    테이블의 각 tr과 td에 원하는대로 넣었는데요.
    (페이징 처리도 하여 총 75페이지에 잘 들어갔습니다.)

    다음으로 제가 해보고 싶은 것은 하나의 파일이 아닌
    여러개의 text 파일을 열어 데이터를 입력하는 것입니다.

    즉, 1개의 textfile만 넣던 것을(ex. 2019년 10월 14일 파일만)
    2019년10월14일 text파일, 2019년10월15일 text파일을 동시에
    받아오고 싶은데요.
    multiple을 사용하여 파일 다중 선택까지는 가능하게 하였으나
    다중 선택한 파일들을 읽어오는데 어려움을 겪고 있습니다.
    혹시 도움 주실 수 있을까하여 이렇게 댓글을 남깁니다 ㅎㅎ ㅠㅠ

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다