Download File dalam PHP

Contoh Kasus:

Saya mempunyai beberapa file dalam direktori dokumen yang bertipe jpg, zip, png dan pdf.

Pertanyaan:

Bagaimana membuat cara mendownload salah satu file berdasarkan tipenya masing-masing … ?

Jawaban:

Kamu bisa gunakan kode berikut ini:

$namaFile=’dokumen/sertifikat.png’; //ganti kode ini sesuai extensi yang kamu inginkan seperti pdf, zip atau jpg 

if(is_file($namaFile)) {

switch(substr(strrchr($namaFile, ‘.’), 1)) {

case ‘pdf’:

$mime = ‘application/pdf’;

break;

case ‘zip’:

$mime = ‘application/zip’;

break;

case ‘rar’:

$mime = ‘application/x-rar-compressed’;

break;

case ‘jpeg’:

case ‘jpg’:

$mime = ‘image/jpg’;

break;

default:

$mime = ‘application/force-download’;

}

header(‘Pragma: public’);

header(‘Expires: 0’);

header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0’);

header(‘Last-Modified: ‘.gmdate (‘D, d M Y H:i:s’, filemtime ($namaFile)).’ GMT’);

header(‘Cache-Control: private’,false);

header(‘Content-Type: ‘.$mime);

header(‘Content-Disposition: attachment; filename=”‘.basename($namaFile).'”‘);

header(‘Content-Transfer-Encoding: binary’);

header(‘Content-Length: ‘.filesize($namaFile));

header(‘Connection: close’);

readfile($namaFile);

exit();

}

Keterangan:

  • is_file($namaFile), Kode ini digunakan untuk memeriksa apakah file dari variabel $namaFile itu ada atau tidak dan apakah file tersebut berjenis regular file atau bukan.
  • strrchr($namaFile, ‘.’), Kode ini digunakan untuk mencari karakter titik yang paling terakhir.
  • substr(strrchr($namaFile, ‘.’), 1), Kode ini digunakan untuk mengambil nama extensi dari file setelah tanda titik seperti pdf, png, zip dan lainnya.
  • metode header() digunakan untuk membuat header HTTP yang diperlukan untuk mendownload file sesuai extensi masing-masing dari file yang mau didownload.
  • readfile($namaFile), Kode ini digunakan untuk membaca sebuah file dan menulisnya ke buffer output.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *