내용이 보인다고 저장까지 끝난 것은 아닙니다
예제 파일 링크를 눌렀는데 새 화면에 글자만 보이나요? 텍스트나 이미지는 브라우저가 바로 표시할 수 있습니다. 파일을 화면에서 여는 동작과 기기에 파일로 저장하는 동작은 다릅니다.
먼저 브라우저의 다운로드 목록과 저장 폴더를 확인하세요. Chrome에서는 오른쪽 위 더보기 메뉴의 다운로드에서 목록을 볼 수 있습니다. 찾는 파일이 없다면 원래 링크로 돌아가 저장 메뉴를 사용하세요. Chrome의 다운로드 안내에서 목록과 저장 위치를 확인할 수 있습니다.
같은 파일을 링크4가지로 열어 봤습니다
2026년10월24일에 가상의 준비물 목록을 텍스트 파일로 만들었습니다. 한글 등을 저장하는 방식인 UTF-8을 사용했습니다. 내용은 다음과 같으며 크기는51바이트입니다. 바이트는 파일 크기를 세는 단위입니다.
오후 모임 준비물
공책 1권
연필 2자루
컴퓨터 안에서 서버2개를 켰습니다. Chrome의 바탕이 되는 브라우저인 Chromium 151을 화면 없이 실행해 링크 클릭을 자동화했습니다. 서버가 보낸 파일 내용은 모두 같았습니다. 달리한 것은 서버의 열기·저장 안내와 링크의 저장 설정입니다. 여기서 ‘저장 설정’은 사이트 제작자가 링크에 붙인 다운로드 요청입니다.
‘같은 출처’는 주소에서 http·https, 도메인 또는 IP, 포트 번호가 모두 같은 경우입니다. 예를 들어 http://127.0.0.1:8000과 http://127.0.0.1:8001은 포트가 달라 서로 다른 출처입니다. 실험에서도 같은 컴퓨터에서 포트만 다른 서버를 사용했습니다.
표의 마지막 두 링크에는 모두 서버가 화면 표시를 안내했습니다. 표와 코드가 화면보다 넓으면 블록 안에서 좌우로 넘겨 보세요.
| 링크 조건 | 클릭한 결과 | 저장 이름 |
|---|---|---|
| 일반 링크 + 화면 표시 안내 | 본문 표시, 다운로드 없음 | 해당 없음 |
| 일반 링크 + 다운로드 안내 | 다운로드 | meeting.txt |
| 같은 출처 + 링크의 저장 설정 | 다운로드 | link-copy.txt |
| 다른 출처 + 링크의 저장 설정 | 본문 표시, 다운로드 없음 | 해당 없음 |
두 다운로드 파일은 모두51바이트였습니다. 원본과 내려받은 파일의 바이트를 직접 비교해 일치하는 것을 확인했습니다. 화면에 표시된 두 경우도 원래 텍스트와 일치했습니다. 저장 이름이 달라졌어도 파일 내용은 바뀌지 않았습니다.
측정 기록에는 파일 내용의 비교에 쓰는 SHA-256 값도 넣었습니다. 직접 파일을 비교하려면 SHA-256으로 파일을 비교하는 방법을 참고하세요.
원본 텍스트와 응답·다운로드 측정 기록을 제공합니다. 이 사이트의 원본 링크도 클릭하면 내용이 보일 수 있습니다. 위 표의 서버 조건을 재현하려면 글 마지막의 스크립트를 실행하세요. 이 비교는 화면 없이 실행한 데스크톱 Chromium의 결과입니다. 실제 Chrome의 저장 메뉴와 Android·iPhone·Safari는 직접 조작하지 않았습니다.
서버의 안내와 링크 설정이 다를 수 있습니다
웹서버는 파일 본문과 함께 처리 방법도 보낼 수 있습니다. 이때 쓰는 안내 중 하나가 Content-Disposition입니다. 웹 응답에 붙는 설정값이며, 방문자가 파일 이름에 입력하는 문구가 아닙니다.
화면 표시: Content-Disposition: inline
다운로드: Content-Disposition: attachment; filename="meeting.txt"
실험에서는 첫 번째 안내를 받은 일반 링크는 텍스트를 표시했습니다. 두 번째 안내를 받은 링크는 meeting.txt를 내려받았습니다. 이 차이는 MDN의 Content-Disposition 설명을 기준으로 확인했습니다. 브라우저 설정에 따라 저장 위치를 묻거나 자동으로 저장할 수 있습니다.
사이트 제작자는 링크에 download라는 저장 설정을 넣을 수도 있습니다. 표의 세 번째와 네 번째가 이 설정을 넣은 링크입니다. 실험에서 같은 출처의 링크는 저장됐지만, 다른 포트의 링크는 화면으로 열렸습니다.
이 결과를 보고 ‘다른 사이트 파일은 저장할 수 없다’고 해석하면 안 됩니다. 다른 출처의 일반 웹주소에서는 링크의 download 설정이 무시됩니다. 파일을 보내는 서버가 다운로드를 안내하면 그 응답에 따라 저장할 수 있습니다. 이 마지막 조합은 이번에 실험하지 않았으며 MDN의 링크 download 설명을 확인해 적었습니다. 방문자는 이 설정을 직접 고치기보다 사이트의 다운로드 버튼이나 브라우저 저장 메뉴를 사용하세요.
PC에서는 원래 파일 링크에서 저장하세요
Chrome 기준으로 다음 순서로 확인하세요. 원하는 파일이 폴더에 있다면2단계부터 다시 저장할 필요는 없습니다.
- 더보기 → 다운로드를 여세요. 해당 항목에서 폴더에 표시처럼 저장 위치를 여는 기능을 누르세요. 운영체제에 따라 메뉴 이름은 다를 수 있습니다. 파일의 이름과 내용을 확인하세요.
- 찾는 파일이 없다면 파일 링크가 있던 페이지로 돌아가세요. 자료 소개 페이지라면 먼저 그 안의 실제 파일 링크나 다운로드 버튼을 찾으세요.
- 텍스트·자료 파일의 링크를 마우스 오른쪽 버튼으로 누르고 다른 이름으로 링크 저장을 선택하세요. 이미지 자체를 저장할 때는 이미지 위에서 이미지를 다른 이름으로 저장을 선택하세요.
- 저장 창에서 파일 이름과 폴더를 확인한 뒤 저장하세요. 파일을 열어 기대한 내용인지 확인하세요.
이 글의 준비물 원본으로 연습한다면 저장한 meeting.txt 안에 ‘오후 모임 준비물’과 준비물2개가 보이는지 확인하면 됩니다. 기존 동명 파일을 덮어쓰지 않도록 별도 폴더에 저장하세요.
브라우저의 ‘페이지를 다른 이름으로 저장’은 현재 웹페이지를 저장하는 메뉴입니다. 자료 소개 화면에서 이 메뉴를 누르면 원하던 원본 대신 소개 페이지를 저장할 수 있습니다. Chrome 공식 안내도 웹페이지 저장과 이미지·파일 저장을 구분합니다. 위 단계는 공식 안내를 바탕으로 정리했으며, 이번 자동 실험으로 우클릭 메뉴까지 검증한 것은 아닙니다.
Android에서는 파일 링크를 길게 누르세요
Android Chrome의 공식 절차는 다음과 같습니다.
- 파일 링크가 있는 페이지에서 해당 링크를 길게 누르세요.
- 링크 다운로드를 선택하세요. 이미지를 저장하려면 이미지에서 이미지 다운로드를 선택하세요.
- Chrome의 더보기 → 다운로드 또는 기기의 파일 앱에서 저장된 항목을 확인하세요.
이 절차는 Android Chrome의 파일 다운로드 도움말을 확인해 적었습니다. 다른 모바일 브라우저에서는 메뉴 이름과 저장 위치가 다를 수 있습니다. 메신저 등 앱 안에서 열린 화면에 저장 메뉴가 없다면 Chrome 같은 브라우저 앱에서 같은 링크를 열어 메뉴를 확인하세요. 로그인한 자료는 브라우저를 바꾸면 다시 로그인해야 할 수 있습니다.
저장한 파일이 예상과 다르면 주소와 내용을 확인하세요
원하던 것이 텍스트 파일인데 저장 창에 .html 이름이 보이거나, 저장한 파일을 열었더니 로그인·자료 소개 화면이 나올 수 있습니다. 이때는 그 이름을 .txt로 바꾸는 것으로 해결하지 마세요. 실제 파일 주소가 아니라 웹페이지 주소를 저장했을 수 있습니다.
원래 사이트로 돌아가 로그인이 필요한지 확인하세요. 소개 화면 안의 다운로드 버튼이 따로 있는지도 확인하세요. 파일이 만료됐다는 안내가 나오면 새 링크가 필요합니다. 위 로컬 비교에서는 로그인이나 만료를 실험하지 않았으므로, 실제 사이트의 오류 안내를 기준으로 원인을 좁히세요.
실험에서도 link-copy.txt라는 이름을 붙였다고 파일 내용이 변환되지는 않았습니다. 이름과 형식의 차이는 확장자만 바꿨을 때의 비교 글에서 따로 확인할 수 있습니다. 저장한 내용이 원본과 다른 문제는 이름 변경보다 파일을 받은 주소부터 다시 살펴보세요.
같은 비교를 다시 실행하려면
JavaScript 실행 도구인 Node.js 24와 Git이 있는 개발 환경에서 아래 명령을 실행하세요. npm ci와 Chromium 설치에는 인터넷 연결이 필요합니다.
git clone https://github.com/hjh3311504/hjh3311504.github.io.git
cd hjh3311504.github.io
npm ci
npx playwright install chromium
node scripts/generate_blog_download_examples.js
Linux에서 Chromium 실행에 필요한 시스템 라이브러리가 없으면 npx playwright install --with-deps chromium으로 함께 설치할 수 있습니다. 이 명령은 운영체제 패키지 설치 권한이 필요할 수 있습니다. Playwright의 시스템 의존성 설치 안내를 참고하세요.
예제 생성 스크립트는 로컬 서버2개를 열고 링크4가지를 클릭합니다. 화면에 표시된 텍스트와 실제 다운로드 파일을 확인합니다. 다운로드 임시 파일은 실행을 마칠 때 지웁니다. 결과는 static/downloads/blog/browser-download/에 남습니다. 다시 실행하면 측정 일시와 실행 버전이 바뀝니다. 실험 페이지가 보내는 요청은 이 스크립트가 연 로컬 서버로만 보냅니다.
함께 읽어보세요
- 파일·링크
운영 중인 블로그 글을 PDF로 저장하니 마지막인5쪽에 안내가 조금 남았습니다. 빈 쪽으로 오해하기 쉬운 부분과 표·그림·링크를 확인하는 방법을 정리합니다.
- 파일·링크
실제 파일3개를 만들고 바이트 수와 브라우저가 읽은 크기를 비교했습니다. 반올림 표시와 용량 단위를 구분하고 업로드 제한을 확인하는 방법을 안내합니다.
- 파일·링크
실제 파일을 만들어 로컬 파일 공유 화면의 순서를 확인했습니다. 번호와 날짜 자릿수를 맞추기 전후의 화면, 예제 ZIP, 다시 확인할 방법을 제공합니다.
- 파일·링크
R&D, A+B, Room#2를 주소에 넣고 실제로 읽히는 값을 비교했습니다. 공유 주소를 복사할 때와 코드로 만들 때 각각 확인할 점을 설명합니다.