Sebagian berkas memang dimaksudkan untuk disimpan, bukan dilihat: laporan tahunan, katalog produk, formulir pendaftaran. Masalahnya, browser senang membuka sendiri berkas seperti PDF dan JPG — pengunjung harus mencari tombol simpan di tab yang terbuka itu. Atribut download membalik perilaku tersebut: satu klik, berkas langsung tersimpan ke folder unduhan.

Atribut download #

Aturan: atribut download dipasang pada elemen a untuk memerintahkan browser menyimpan sumber daya tujuan, alih-alih membukanya. Atribut ini termasuk atribut boolean — cukup ditulis tanpa nilai:

html
<p><a href="laporan-tahunan.pdf" download>Unduh laporan tahunan (PDF)</a></p>

Hasil Render: teks link tampil seperti biasa, tetapi satu klik tidak membuka tab pembaca PDF — browser langsung mengunduh laporan-tahunan.pdf. Mari kita telaah:

  1. href="laporan-tahunan.pdf": berkas tujuan, ditulis dengan URL relatif seperti link halaman biasa.
  2. Atribut download: kehadirannya saja sudah cukup — atribut boolean tidak memerlukan nilai.

Mengganti Nama File Unduhan #

download juga menerima nilai: nama yang dipakai browser saat menyimpan berkas. Atribut type melengkapinya dengan informasi jenis berkas sehingga browser tahu sejak awal apa yang akan diunduh:

html
<p><a href="menu-lengkap.pdf" download="menu-kedai-siti.pdf" type="application/pdf">Unduh menu lengkap</a></p>

Nilai type memakai penanda MIME — application/pdf untuk PDF, image/jpeg untuk JPG — dan berfungsi sebagai informasi; nilai ini tidak mengubah isi berkasnya.

Batasan Keamanan: Same-Origin #

Mekanisme download punya pagar keamanan: atribut ini hanya dihormati bila URL tujuan berada pada origin yang sama dengan halaman kita, atau memakai skema blob: dan data:. Untuk link lintas domain, browser mengabaikan atribut download seolah-olah ia tidak ditulis:

html
<!-- download diabaikan: berkas berada di domain berbeda -->
<p><a href="https://example.org/laporan.pdf" download>Laporan cadangan</a></p>

Link di atas tetap sah dan tetap berfungsi — hanya perilaku unduhnya yang tidak terjadi; browser membuka berkas seperti link biasa. Pagar ini mencegah halaman kita memaksa pengunduhan berkas dari situs lain yang tidak kita kendalikan.

Ringkasan #

  • Atribut download pada a memerintahkan browser menyimpan berkas alih-alih membukanya.
  • Nilai download="nama.pdf" mengganti nama berkas hasil unduhan; type memberi tahu jenis MIME-nya.
  • Atribut ini hanya dihormati untuk URL same-origin serta skema blob: dan data: — lintas origin diabaikan browser.
  • Manfaat terbesarnya pada berkas yang biasa dibuka browser: PDF, JPG, dan TXT.

Perilaku link berikutnya tidak menyimpan berkas, melainkan membuka tempat baru untuk menampilkannya: tab baru.