Ck1010
235
2020-10-27 21:12:44
6
160

[자바스크립트 ] input type=file 안쓰고 파일 읽어올 수 있나요?


안녕하세요~!!


자바스크립트로 파일 읽어오기를 찾아보니 전부 input type=file 을 사용해서

윈도우 탐색기를 이용해 파일을 선택해서 읽어오더군요


그런 방식이 아닌 애초에 파일 경로명을 이용해 파일을 읽어오는 방법은 없나요?

(img태그의 src 처럼 경로명으로...)


감사합니다~!!

0
  • 답변 6

  • 얻으민
    1k
    2020-10-27 21:37:27

    보안문제로 절대 불가능합니다.

  • RWB
    410
    2020-10-27 21:42:11

    웹 페이지에서 클라이언트의 파일 경로(c:\Users\...readme.txt 같은 형식)를 통한 파일 읽기는 보안상으로 불가능합니다.


    만약 이게 가능하다면, 웹 페이지에서 사용자 모르게 사용자의 파일에 접근할 수 있게 됩니다.

    C:\Program Files 등 고정적인 경로 내부의 폴더나 파일에 접근하여 클라이언트가 원치 않는 동작을 할 수 있는 셈이죠. 따라서 파일은 반드시 input을 통해서만 다룰 수 있습니다.

  • Ck1010
    235
    2020-10-27 21:42:13
    얻으민 그렇군용... 감사합니다 !!
  • Ck1010
    235
    2020-10-27 21:43:11

    RWB 아.. 그래서 안되는 거군요... 여기까지는 생각을 못해봤어요. 감사합니다

  • HJOW
    1k
    2020-10-28 10:09:20 작성 2020-10-28 10:14:20 수정됨

    답은

    input type file 없이도 아주 잘 됩니다.

    단, 잘 된다는게

    사용자의 디스크 드라이브에서 원하는 파일을 바로 액세스할 수 있다는 얘기는 아닙니다.



    1. input type file 을 써서 파일 선택 대화상자를 통해 불러오든지


    2. 사용자가 파일을 지정된 영역으로 끌어다 놓든지

    (jQuery 로 줄 수 있는 이벤트 중에 'drop' 이라는 이벤트가 있습니다. div 같은곳에다가 저 drop 이벤트 달아놓고, 사용자가 파일을 드래그해 놓아서 이벤트 호출되면 이벤트 함수에서 파일을 읽을 수 있습니다.)

    바닐라맛 자바스크립트로도 가능합니다.

    https://webisfree.com/2019-11-22/html5%EC%9D%98-%EB%93%9C%EB%9E%98%EA%B7%B8%EC%95%A4%EB%93%9C%EB%9E%8D-%EA%B5%AC%ED%98%84-%EB%B0%A9%EB%B2%95-%EB%B0%8F-%EC%98%88%EC%A0%9C-drag-and-drop


    3. 동일 서버에서 파일 다운로드 내려준 파일이거나

    (AJAX에 쓰이는 XMLHttpRequest 로 파일 다운로드도 수행할 수 있습니다. 이걸로 파일 다운로드 시킨 파일에는 엑세스 가능합니다. 물론 다운로드 시켜드린 파일을 다시 읽을 필요야 없겠지만요.)


    셋중 하나는 해야 됩니다.

  • Ck1010
    235
    2020-10-29 10:32:23

    HJOW 다른 방법들도 있었군요. 감사합니당!@!@

  • 로그인을 하시면 답변 을 등록할 수 있습니다.