Skrip PHP Download file melalui URL

 

Calendar photo created by rawpixel.com - www.freepik.com


Pendahuluan

Download merupakan sebuah proses mengambil data dari internet (cloud) dan menyimpannya dalam memori internal di komputer kita. Agar proses mengambil data tersebut dapat berjalan baik tentu setiap server telah menyiapkan protokol atau tata cara tertentu agar memudahkan cara pengguna dalam mendownload sebuah file dari server tersebut.

Dari segi user atau pengguna untuk proses download mungkin hanya perlu mengikuti instruksi yang tersedia dari website atau server yang dituju. Akan tetapi jika dari segi developer (programmer) tentu hal tersebut tidak semudah yang dibayangkan ada perintah (sintaks) tertentu yang harus di rangkai agar server mau menjalankan proses download tersebut secara otomatis.

Biasanya untuk proses download ini perintahnya tidak terlalu rumit atau panjang , dengan bahasa pemrograman PHP berikut adalah contoh perintah sederhana untuk meminta server agar melakukan download otomatis file :

<?php

// path file atau lokasi file yang akan di download
$filename = 'Documents/readme.pdf';

// Cek apakah file tersebut tersedia atau tidak
if (file_exists($filename)) {
        // Jika tersedia dibawah ini adalah perintah untuk downloadnya
	header('Content-Description: File Transfer');
	header('Content-Type: application/octet-stream');
	header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
	header('Expires: 0');
	header('Cache-Control: must-revalidate');
	header('Pragma: public');
	header('Content-Length: ' . filesize($filename));
	readfile($filename);
	exit;
}

?>


Perintah atau sintaks diatas akan memerintahkan server untuk melakukan proses download otomatis dari path (lokasi file) yang sudah ditentukan diatas yakni "Documents/readme.pdf". Tentu path file tersebut dapat disesuaikan dengan lokasi file atau folder tempat penyimpanan di server agar bisa di download oleh user atau pengguna. Kembali - [Daftar Isi]

Contoh Kasus

Dalam penjelasan mengenai proses download diatas untuk perintah (sintaks) dari PHP tersebut hanya menjalankan download otomatis jika path (lokasi file) nya berada pada website atau sisi server yang sama. Misalnya user mau download gambar.jpg di website testing.com , tentu download file nya akan di arahkan ke halaman testing.com/gambar.jpg

Asumsinya berarti gambar.jpg tersebut berada pada server testing.com dan skrip PHP diatas bisa digunakan di sisi server testing tersebut agar memudahkan user untuk melakukan proses download secara otomatis.

Sekarang pertanyaannya adalah bagaimana skrip PHP jika dari server testing tersebut ingin download gambar dari server lain secara otomatis misalnya server lainnya itu adalah testing2 ?

Nah dalam pembahasan kali ini saya akan memberitahukan perintah atau skrip PHP download file melalui URL ini bisa digunakan tidak hanya untuk sisi server kita sendiri tapi bisa digunakan untuk mendownload ke server lain karena protokol yang digunakan disini adalah URL.

URL (Uniform Resource Locator) adalah  suatu rangkaian karakter menurut suatu format standar tertentu (protokol), yang digunakan untuk menunjukkan suatu sumber (alamat) seperti dokumen dan gambar di Internet. Jadi dengan URL ini kita bisa mendefinisikan sebuah alamat website yang menyimpan dokumen dan gambar yang selanjutnya bisa kita unduh atau download secara langsung sesuai kebutuhan kita dan tentunya kita jangan sampai melupakan hakcipta dari dokumen atau file yang kita akan download tersebut ya. Kembali - [Daftar Isi]

Penyelesaiannya

Untuk menyelesaikan kasus diatas berikut dibawah ini adalah sintak PHP nya agar bisa mendownload file melalui URL tidak hanya dari sisi server itu sendiri tapi bisa kita definisikan untuk mengambil file atau gambar dari server website lain :

<?php

	// fungsi download melalui URL
	function download($url) {
	    set_time_limit(0);
	    $ch = curl_init();
	    curl_setopt($ch, CURLOPT_URL, $url);
	    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
	    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
	    $r = curl_exec($ch);
	    curl_close($ch);
	    header('Expires: 0'); // no cache
	    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
	    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
	    header('Cache-Control: private', false);
	    header('Content-Type: application/force-download');
	    header('Content-Disposition: attachment; filename="' . basename($url) . '"');
	    header('Content-Transfer-Encoding: binary');
	    header('Content-Length: ' . strlen($r)); // provide file size
	    header('Connection: close');
	    echo $r;
	}

	// Masukkan URL untuk downloadnya
	$url = 'https://cdn.pixabay.com/photo/2014/08/08/07/25/here-and-now-413092_960_720.jpg';
	// Jalankan Fungsi
	download($url);

?>


Skrip PHP diatas sebenarnya tidak jauh berbeda dengan skrip PHP untuk download file secara umum , perbedaannya hanya jika hendak mendownload file melalui URL tentu kita perlu fungsi cURL. cURL adalah sebuah perintah atau fungsi dalam skrip PHP  yang menyediakan pustaka untuk pentransferan data menggunakan berbagai protokol jaringan. Kepanjangan dari singkatan cURL adalah  "Client URL".

Sedangkan fungsi header() adalah sama dengan fungsi dalam skrip PHP diatas untuk download file normal (melalui path pada server itu sendiri) dan dapat melakukan download langsung secara otomatis.

Dan yang membedakannya lagi untuk skrip PHP diatas adalah untuk download file nya dibuat fungsi terpisah dan tidak ada pengecekan path sehingga server dapat langsung mengecek pada URL yang di inputkan pada variable $url dan jika file nya tersedia maka akan melakukan proses download secara otomatis. Kembali - [Daftar Isi]

Jika penjelasan diatas masih agak sulit untuk anda pahami , berikut dibawah ini adalah video tutorialnya melalui video youtube di channel kami :




Sekian materi atau penjelasan singkat mengenai Skrip PHP Download File Melalui URL.

Semoga dapat membantu.

Berlangganan Artikel Kami

Mendukung Solusi IT untuk semua orang
Back to top