HTML로 다운로드 링크를 만들려면 어떻게해야합니까?


224

HTML에 대한 기본 아이디어가 있습니다. 샘플 웹 사이트에서 다운로드 링크를 만들고 싶지만 어떻게 만드는지 모르겠습니다. 방문하지 않고 파일을 다운로드 할 수있는 링크를 만들려면 어떻게합니까?


11
이 질문에 대한 승인 표시를 바꿔야합니다.
Pekka

답변:


163

이 답변은 구식입니다. 이제 download속성이 있습니다. ( MDN에 대한링크 참조 )

"다운로드 링크"가 다운로드 할 파일에 대한 링크를 의미하는 경우

  <a href="http://example.com/files/myfile.pdf" target="_blank">Download</a>

target=_blank다운로드가 시작되기 전에 새 브라우저 창이 나타나게됩니다. 이 창은 일반적으로 브라우저가 리소스가 파일 다운로드임을 감지하면 닫힙니다.

브라우저에 알려진 파일 형식 (예 : JPG 또는 GIF 이미지)은 일반적으로 브라우저 내에서 열립니다.

여기에 설명 된대로 올바른 헤더를 보내서 다운로드를 시도 할 수 있습니다 . (서버 측 스크립팅 또는 서버 설정 액세스가 필요합니다.)


1
다운로드 속성을 사용하지 않는 이유는 jpg와 같은 파일을 얻는 경우 열지 않고 다운로드하는 것입니다.
Ben

2
IE에서는 작동하지 않으므로 "target = '_ blank'"를 생략하십시오. 당신은 그것을 테스트 했습니까?
Tara

4
@Dudeson은 "작동하지 않는"항목과 사용중인 IE 버전을 지정하십시오. (이제 아래의 TIIUNDER의 최신 답변을 사용하는 것이 안전합니다. 수락 표시를 받아야합니다.)
Pekka

2
@ Sergiu 대답은 일곱 살입니다. 나는 그것을 삭제할 수없고, asker는 승인 마크 전환 요청에 응답하지 않았다. 우리가 할 수있는 일은 없지만, 더 최근의 답변에 대한 링크를 추가 할 것이다
Pekka

1
@Dani는 아래 TIIUNDER의 답변을 참조하십시오.
Pekka

455

HTML5를 지원하는 최신 브라우저에서는 다음이 가능합니다.

<a href="link/to/your/download/file" download>Download link</a>

이것을 사용할 수도 있습니다 :

<a href="link/to/your/download/file" download="filename">Download link</a>

이렇게하면 실제로 다운로드중인 파일의 이름을 변경할 수 있습니다.


PFD 파일 다운로드에 동일한 코드를 사용했으며 모든 브라우저에서 모두 테스트되었지만 사파리에서는이 코드가 새 탭에서 열린 pdf 파일을 다운로드하는 대신 사파리가 작동하지 않습니다.
Khunt

6
caniuse.com/#search=download%20attribute Internet Explorer 및 Safari가 아닌 Chrome, Edge, Firefox, Opera 및 최신 Android 4.4 이상 브라우저에서 작동합니다.
Bart Verkoeijen

버튼 클릭시 동적으로 링크를 만들려면 어떻게해야합니까?
Nongthonbam Tonthoi 2016 년

1
@NongthonbamTonthoi는 자바 스크립트를 사용하여 href를 태그에 동적으로 할당 할 수 없습니다
akshay kishore

1
동일한 출처 URL로 제한되므로 반드시 작동하지는 않습니다.
Nathan

22

<a download이미 언급 한 HTML5의 속성 에 추가하여 (또는 대체로)
, 브라우저의 디스크로 다운로드 동작은 다음 http 응답 헤더에 의해 트리거 될 수도 있습니다.

Content-Disposition: attachment; filename=ProposedFileName.txt;

이것은 HTML5 이전에 수행했던 방법이었습니다 (그리고 여전히 HTML5를 지원하는 브라우저에서 작동합니다).


4
그러나 그것은 서버 측 구현이 필요합니다. 맞습니까?
Lombas

@Lombas 예, 서버 만 http 응답 헤더를 설정할 수 있습니다.
Myobis

이것이 정답입니까? 또한 컨텐츠 유형 헤더를 전송하고 파일을 읽어 강제로 다운로드해야합니다. 당신의 대답을 원할 수도 있습니다. 전체 답변은 stackoverflow.com/a/1465631/2757916 입니다.
Govind Rai

이는 서버 측 구현에 적합하며 컨텐츠 유형도 정확합니다. 그것은 download속성에 비해 잘 지원됩니다
william.eyidi

9

다운로드 링크는 다운로드하려는 리소스에 대한 링크입니다. 다른 링크와 같은 방식으로 구성됩니다.

<a href="path to resource.name of file">Link</a>

<a href="files/installer.exe">Link to installer</a>

8

파일에 링크하려면 다른 페이지 링크와 동일하게 수행하십시오.

<a href="...">link text</a>

플러그인 (Windows + QuickTime = ugh)이 내장되어 있어도 강제로 다운로드하려면 htaccess / apache2.conf에서 사용할 수 있습니다.

AddType application/octet-stream EXTENSION

감사! 이것은 훨씬 간단하고 서버 전체입니다! : DI는이 링크를 조금 더 정교하게 만들었습니다. 감사합니다. htaccess-guide.com/adding-mime-types
Joe DF

그러면 해당 유형의 모든 파일 만 다운로드됩니다. 원하는 경우 괜찮지 만 다운로드하지 않고 해당 유형의 다른 파일을 브라우저에 표시하려는 경우 적합 할 수 있습니다.
TecBrat

4

이 스레드는 아마도 고대에는 있지만, 로컬 파일의 경우 html5에서 작동합니다.

PDF의 경우 :

<p><a href="file:///........example.pdf" download target="_blank">test pdf</a></p>

그러면 새 창에서 pdf가 열리고 적어도 파이어 폭스에서 다운로드 할 수 있습니다. 다른 파일의 경우 파일 이름을 지정하십시오. 이미지와 음악의 경우 사이트와 동일한 디렉토리에 저장하려고합니다. 그래서 그것은 같을 것입니다

<p><a href="images/logo2.png" download>test pdf</a></p>

2

다운로드 속성은 IE에서 작동하지 않으며 "다운로드"를 완전히 무시합니다. href가 원격 사이트를 가리키는 경우 Firefox에서 다운로드가 작동하지 않습니다. 따라서 Odin의 예제는 Firefox 41.0.2에서 작동하지 않습니다.


1

여기에 도움이 될 수있는 미묘한 점이 하나 더 있습니다.

브라우저 내 재생 및 표시뿐만 아니라 순전히 다운로드 할 수있는 링크를 갖고 싶습니다. 새 다운로드 속성은 문제가 없지만 브라우저에서 파일을 재생하거나 파일을 표시하도록 강요하기 때문에 여전히 작동하지 않습니다.

그러나 이것은 URL의 파일 이름에 대한 확장자를 검사하는 것을 기반으로합니다! 동일한 파일을 두 가지 다른 방법으로 제공하기 때문에 서버의 확장자 매핑을 사용하지 않으려 고합니다. 따라서 다운로드의 경우 파일을이 확장명 매핑에 대해 불투명 한 이름으로 소프트 링크하고 파일을 가리킨 다음 다운로드의 이름 바꾸기 기능을 사용하여 이름을 수정하여 파일을 속일 수 있습니다.

<a target="_blank" download="realname.mp3" href="realname.UNKNOWN">Download it</a>
<a target="_blank" href="realname.mp3">Play it</a>

나는 끝에 더미 쿼리를 던지거나 확장 프로그램을 난독 처리하는 것이 효과가 있기를 바랐지만 슬프게도 그렇지 않습니다.


0

<a>HTML5 태그의 새로운 다운로드 속성

<a href="http://www.odin.com/form.pdf" download>Download Form</a>
또는
<a href="http://www.odin.com/form.pdf" download="Form">Download Form</a>

나는 모든 확장과 관련하여 선호되는 첫 번째 것을 선호합니다.


0

당신은 내 길을 따라 다양한 방법으로 다운로드 할 수 있습니다. '허용 팝업'권한으로 인해 파일이 다운로드되지 않을 수 있지만 환경에 따라 완벽하게 작동합니다.

<div className="col-6">
                    <a  download href="https://www.w3schools.com/images/myw3schoolsimage.jpg" >Test Download </a>
                </div>

또 다른 하나는 'X-Frame-Options'가 'sameorigin'으로 인해 실패합니다.

<a href="https://www.w3schools.com/images/myw3schoolsimage.jpg" download>
  <img src="https://www.w3schools.com/images/myw3schoolsimage.jpg" alt="W3Schools" width="104" height="142">
</a>


-3

이렇게

<a href="www.yoursite.com/theThingYouWantToDownload">Link name</a>

사이트 example.com의 파일 name.jpg는 다음과 같습니다.

<a href="www.example.com/name.jpg">Image</a>

후자의 문제는 브라우저에서 열리고 다운로드 및 저장을 위해 제공되지 않는다는 것입니다.
Pekka

9
작동하지 않습니다. 브라우저는이를 상대 링크로 취급 합니다. 지정된 도메인과의 절대 링크에 ./www.example.com/name.jpg사용해야 http://합니다.
Delan Azabani

-7

나는 늦었다는 것을 알고 있지만 이것은 검색 1 시간 후에 얻은 것입니다.

 <?php 
      $file = 'file.pdf';

    if (! file) {
        die('file not found'); //Or do something 
    } else {
       if(isset($_GET['file'])){  
        // Set headers
        header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=$file");
        header("Content-Type: application/zip");
        header("Content-Transfer-Encoding: binary");
        // Read the file from disk
        readfile($file); }
    }

    ?>

그리고 다운로드 가능한 링크를 위해 나는 이것을했다.

<a href="index.php?file=file.pdf">Download PDF</a>

6
이것은 끔찍하다. 이러한 다운로드 링크가 표시되면 index.php? file = index.php를 사용하여 코드의 복사 / 붙여 넣기 구현에서 악의적 인 사용자가 데이터베이스에 액세스 할 수있게하는 충동에 저항해야합니다.
M.Stramm

1
나쁜 생각. 첫째, 서버가 필요 이상으로 작동하게하기 때문입니다. 둘째, 사용자가 모든 파일을 다운로드 할 수 있기 때문에 : p
José Neto
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.