goodchuck 블로그

PC 폴더를 아이폰에서 바로 보기 — 와이파이로 띄우는 사진 갤러리, Folderbeam

5분 읽기

PC 에 있는 사진과 영상을 아이폰에서 보는 앱, Folderbeam 을 만들었습니다. PC 에서 볼 폴더를 고르고 서버를 켜면, 같은 와이파이에 있는 아이폰이 QR 코드를 찍어 Safari 로 사진·영상을 갤러리처럼 둘러봐요. 클라우드에 올릴 필요도, 폰에 앱을 깔 필요도 없습니다.

[Windows PC]  Folderbeam ── 같은 와이파이 ──▶  [아이폰 Safari]
   └ 공유한 폴더 (읽기만)                         QR 찍고 바로 보기

왜 만들었나

Windows PC 의 특정 폴더들에 있는 사진과 영상을 폰으로 보고 싶었는데, 바로 볼 방법이 없었습니다. 그래서 조건을 아주 단순하게 잡았어요. 컴퓨터가 켜져 있고, 폰이 같은 와이파이에 있으면 그 폴더를 폰에서 그대로 볼 수 있게.

거창한 동기화나 백업이 필요한 게 아니었어요. 그냥 PC 에 있는 걸 폰 화면으로 보고 싶었을 뿐이라, 그 한 가지만 하는 앱을 만들었습니다.

쓰는 법

  1. PC 에서 Folderbeam 을 켜고 폴더 추가로 볼 폴더를 고릅니다. 여러 개를 한 번에 골라도 돼요.
  2. 서버 켜기를 누르면 접속 주소와 QR 코드가 뜹니다.
  3. 아이폰 카메라로 QR 을 찍으면 Safari 에서 바로 열려요.

Safari 의 공유 버튼에서 홈 화면에 추가를 해 두면 앱처럼 전체 화면으로 뜹니다. 폴더마다 주소가 고정이라, 앱을 다시 켜도 폰에 저장해 둔 주소가 그대로 살아 있어요. 다만 PC 의 IP 가 바뀌면 주소도 바뀝니다.

폰에서 보는 화면

폴더를 열면 하위 폴더, 사진·영상 그리드, 그 밖의 파일 순으로 보여 줍니다. 이름순·최신순으로 바꿀 수 있어요.

폴더를 연 화면 — 사진·영상이 그리드로 보인다 (샘플로 이 블로그의 캡처 6장을 넣었다)
폴더를 연 화면 — 사진·영상이 그리드로 보인다 (샘플로 이 블로그의 캡처 6장을 넣었다)

사진을 누르면 한 장씩 보는 뷰어가 열립니다. 아이폰 사진 앱에서 익숙한 동작을 그대로 옮기려고 했어요.

  • 손가락을 따라오는 좌우 넘김 — 빠르게 튕겨도 넘어갑니다
  • 핀치 확대, 더블탭으로 확대 / 원래대로, 확대한 채 끌어서 이동
  • 아래로 쓸면 사진이 작아지면서 닫힘
  • 탭 한 번이면 버튼이 숨어 사진만 보여요
뷰어 — 위에 몇 번째 장인지, '세로로' 모드와 '원본' 버튼
뷰어 — 위에 몇 번째 장인지, '세로로' 모드와 '원본' 버튼

세로로 버튼을 누르면 폴더의 사진·영상을 웹툰처럼 한 줄로 쭉 내려 볼 수 있습니다. 고른 모드는 기억해 둬요.

왜 데스크탑 앱 + 웹 페이지인가

폴더는 PC 에 있고, 폴더를 고르는 건 Windows 폴더 선택창이 제일 편합니다. 그래서 PC 쪽은 데스크탑 앱(Electron)으로 만들고, 그 안에 작은 웹 서버를 넣었어요. 폰 쪽은 그 서버가 내주는 웹 페이지 하나로 끝냅니다. 폰에 앱을 깔 필요가 없는 이유예요.

빠르게 보이게

와이파이로 사진을 받다 보면 금방 느려집니다. 몇 가지로 버텼어요.

썸네일은 Windows 에게 맡긴다. 그리드의 작은 그림은 Windows 탐색기가 쓰는 썸네일 기능으로 만듭니다. 덕분에 JPG·PNG 는 물론 MP4·MOV 영상의 장면까지 따로 라이브러리 없이 나와요. 한 번 만든 썸네일은 PC 에 저장해 두고 다시 씁니다.

뷰어에는 줄인 사진을 먼저. 카메라 원본은 한 장에 몇 MB 라, 와이파이에서도 한 장 띄우는 데 1~2초가 걸립니다. 그래서 큰 사진은 같은 방법으로 긴 변 1,600px 짜리 축소본을 먼저 보내요. 실제로 재 보니 1.6MB 사진이 129KB 가 됐습니다. 그리고 확대하는 순간 원본을 뒤에서 받아 바꿔 끼워요. 평소엔 가볍고, 확대해도 뭉개지지 않습니다. 움직이는 gif 는 축소하면 움직임이 사라지니 늘 원본으로 보내고요.

아이폰으로 찍은 HEIC 사진은 PC 에 HEIF 확장이 없으면 썸네일을 못 만듭니다. 그럴 땐 폰이 원본을 직접 띄워요. Safari 는 HEIC 를 읽을 수 있으니까요.

영상 — Safari 는 조금씩 달라고 한다

영상에서 한 번 막혔습니다. 아이폰 Safari 는 영상을 통째로 받지 않고 "몇 바이트부터 몇 바이트까지" 조각으로 달라고 요청해요(HTTP Range 요청). 서버가 그 조각을 정확히 잘라 주지 못하면 영상이 아예 재생되지 않습니다. 그래서 서버에 이 조각 요청을 처리하는 부분을 따로 만들었어요.

Safari 가 재생하지 못하는 mkv·avi 는 갤러리에 넣지 않고 다운로드 링크로만 보여 줍니다.

안전하게 — 로그인이 없는 대신

Folderbeam 에는 로그인이 없습니다. 같은 와이파이에 있으면 누구나 볼 수 있어요. 일부러 그렇게 정했고, 대신 볼 수 있는 범위를 좁게 막았습니다.

  • 읽기만 된다 — 올리기·지우기·이름 바꾸기 기능이 아예 없어요.
  • PC 에서 추가한 폴더 밑만 보인다 — 폰에서 드라이브 전체를 뒤질 수 없습니다.
  • 폴더 밖으로 못 나간다 — 주소에 .. 를 넣거나, 폴더 안의 바로가기(링크)가 밖을 가리켜도 막아요.
  • 공유 폴더 안의 .html·.svg 파일은 다운로드로만 보낸다 — 브라우저에서 바로 열리면 그 안의 스크립트가 실행될 수 있으니까요.

그래도 카페 와이파이 같은 공용망에서는 서버를 끄는 게 맞습니다. 비밀번호가 필요해지면, QR 코드에 열쇠(토큰)를 넣어 폰이 기억하게 하는 방식을 다음 단계로 생각하고 있어요.

폰에서 안 열릴 때

폰에서 주소가 안 열리면 이 순서로 확인해 보세요.

  1. Windows 방화벽 — 처음 서버를 켤 때 뜨는 방화벽 창에서 개인 네트워크를 허용해야 해요. 놓쳤다면 Windows 보안 → 방화벽 → 앱 허용에서 체크합니다.
  2. 네트워크 프로필 — 와이파이가 "공용 네트워크"로 잡혀 있으면 막힙니다. 설정에서 "개인"으로 바꿔요.
  3. 같은 공유기인지 — 폰이 LTE·5G 이거나 게스트 와이파이에 붙어 있으면 안 보여요. 컨트롤 창의 주소 앞부분(예: 172.30.1.x)과 폰의 IP 앞부분이 같은지 비교해 보세요.
  4. 포트 충돌 — 다른 프로그램이 같은 포트를 쓰고 있으면 컨트롤 창에 빨간 문구가 뜹니다.

정리

하는 일PC 폴더의 사진·영상을 같은 와이파이의 아이폰 Safari 에서 갤러리로
폰에 필요한 것없음 (Safari 만)
빠르게썸네일은 Windows 기능으로, 뷰어는 축소본 먼저 · 확대할 때 원본
안전하게읽기 전용, 추가한 폴더만, 폴더 밖 차단

아직은 직접 빌드해 쓰는 단계라, 설치 파일을 공개 배포하지는 않았어요.