Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- device in use
- 티스토리 성능
- adb pair
- animation
- github pdf
- Failed to compiled
- custom printing
- ELECTRON
- silent printing
- npm package
- vercel git lfs
- github lfs
- Git
- Recoil
- Can't resolve
- Each child in a list should have a unique "key" prop.
- react-native
- augmentedDevice
- camera permission
- github 100mb
- electron-packager
- adb connect
- rolldown
- ffi-napi
- nextjs
- camera access
- dvh
- 이미지 데이터 타입
- html
- react-native-dotenv
Archives
- Today
- Total
Bleeding edge
브라우저에서 로컬파일 여는 방법 본문
이 주제를 공부한 이유
개발자 커뮤니티 슬랙에서, 브라우저에서 txt나 zip와 같은 파일을 open할 수 있는 지에 대한 질문이 올라왔다. 이 질문을 읽었을 때 브라우저에서는 로컬에 파일이 접근이 안되지 않나..? 근데 어떤 웹들을 보면 또 접근이 가능하게 구현한 것 같은데? 재밌어 보여서 시작했다..
접근 방법
1. 파일을 어떻게 열까?
가장 먼저 생각나는 방법으로 window.open을 사용하였다!
Not allowed to load local resource:
역시 브라우저에서는, load local resource에 대해 접근을 막고 있었다..
2. Mdn에서 정의하는 window.open을 보자
MDN의 window.load를 보면 첫 번째 파라미터가 URL or path라는 것을 볼 수 있다. URL or path면 충분히 열릴만도한데.. 로컬이라 파일이 열리지 않는다. 백준 애드온에서 많이 사용하던 상황인 것같다.(링크를 걸려구 했는데, blob과 createURLObject에 대한 글을 안남겼었다니.. 충격이다.. 작성해야지..)
- 파일의 주소가 필요한 경우
- 파일의 주소를 직접 사용할 수 없는경우
이 질문은 input으로 파일을 불러들였을 때, 그 파일을 open하는 방법을 질문하였으니 굳이 Blob을 이용해서 파일 인 것 같은 것을 만들 필요는 없으니 createURLObject만 이용하여 해결하였다.
해결 코드
let input = document.querySelector("#input");
input.addEventListener("change", (e) => {
let file = input.files[0];
let url = URL.createObjectURL(file); // A valid URL that you can use on the page
});
마무리
이 질문 말고도 슬랙에 다양한 답변을 달았엇는데, 항상 그냥 답변을 남기고 끝냈었던 것 같다. 앞으로는 좀 흥미롭거나 검색해서 찾아본 주제 같은 경우는 답변에대한 글을 남겨야곘다.
'Javascript' 카테고리의 다른 글
환경에 따라 다른 서버로 Request 보내기 (0) | 2023.08.09 |
---|---|
새로고침과 창끄기를 구분하는 방법 (0) | 2023.04.12 |
Queue를 class로 구현해보자. (0) | 2022.10.30 |
클린코드 작성하기 (0) | 2022.07.10 |
fetch로 카테고리별로 분류하기 (0) | 2022.07.09 |