이 두 부분이 있습니다
- 브라우저를 강제로이 파일을 표시하려고하지 말고 파일을 다운로드하십시오 (.exe는 문제가 없지만 이미지, 동영상 또는 HTML 파일로도 할 수 있습니다).
- 브라우저에 파일 다운로드를 요청하는 메시지가 표시됩니다.
페이지를 변경하지 않고 브라우저가 파일을 다운로드하도록하려는 경우가 있습니다. 우리는이 같은 링크를 만들 수 있으며, 예상대로 작동합니다 :
<a href="/download.zip">Download File</a>
브라우저가 아마 zip 파일을 처리하는 방법을 알고하지 않기 때문에 똑바로라는 이름의 파일에 "download.zip"다운로드
URL에있는 파일 이름 다음에. 당신은하지만, 대신 JPG를 다운로드하고 싶다면,이 작동하지 않을 것입니다 :
<a href="/images/sunset.jpg">Save this Sunset!</a>
브라우저는 JPEG를 표시하는 방법을 알고, 그래서 페이지를 리디렉션 및 JPEG를 보여줍니다. 이제 브라우저에 표시하지 말고 대신 다운로드하십시오. 이를 위해서는 서버의 응답에 특정 HTTP 헤더를 보내야합니다.
아파치는 .htaccess에서 헤더를 지정하여 처리 할 수 있지만 특정 기술을 사용하지 않고 메커니즘에 관해 이야기하기로합니다.
그래서 우리는 이미지와 함께 브라우저에 다음과 같은 헤더를 보내
이
Content-disposition: attachment; filename=the_sunset_of_a_lifetime.jpg;
첫 번째 헤더, content-disposition
, 우리는 파일이 첨부되고 싶어 브라우저를 알려줍니다, 또는 다른 말로, 저장해야하며 표시되지 않아야합니다. filename
속성은 파일을 저장하는 데 사용할 이름을 지정합니다 ("sunset.jpg"대신 파일 이름은 "the_sunset_of_a_lifetime.jpg"입니다).
이제 "일몰을 다운로드하십시오.jpg "파일은 우리가 원하는 것처럼 작동하지만 사용자가 링크를 클릭하지 않고 브라우저에서 다운로드하여"감사 "페이지를 표시하고 다운로드가 시작되도록 요청하려면 어떻게해야합니까? 간단한 <meta>
태그는 트릭을 수행 할 수 있습니다 브라우저를 말하는 것은 시간의 집합 기간 후에 페이지를 리디렉션 :
<meta http-equiv="refresh" content="2;url=/images/sunset.jpg">
때 head
에서 해당 메타 태그와 페이지가로드가로드하려고 후 2 초간 기다린 것을 "감사" 마지막 단계에서 설정 한 헤더를 가져와 표시하는 대신 다운로드하여 사용자가 원하는대로 페이지에 머무르게합니다.
고마워요.하지만이 부분에 대해서는 조금 명확하지 않습니다. "그래서 우리는 다음 헤더를 이미지와 함께 브라우저에 보냈습니다 ..."그 헤더는 어느 파일에 저장됩니까? 그리고 그 파일에서? – cksubs
HTTP 헤더는 브라우저 (요청 헤더)와 서버 (응답 헤더)에 의해 보내집니다. 아파치를 사용하고 있다면 아파치가 특정 파일이나 디렉토리에 대한 요청에 임의의 헤더를 추가하도록 지시하는 지시어를 만들 수 있습니다. 자세한 정보는 http://httpd.apache.org/docs/2.2/mod/mod_headers.html을 참조하십시오. 필요한 경우 .htaccess/httpd.conf 설정을 만드는 데 도움이되는 별도의 질문을 만들어야합니다. – coreyward
확인. 그리고 헤더는 브라우저가 일반적으로 열어 두는 파일 (예 : .jpg)을 처리 할 때만 필요하지만 대신 강제로 다운로드하려고합니까? .exes 및 기타 브라우저가 아닌 파일 형식에 헤더가 필요합니까? .exe를 사용하고 있다면 메타 태그가 작동합니까? – cksubs