Tajuk: Muat turun file dengan Php

Genius Corner Siri 40

Oleh: Fariz Gaskin

 

Salam ceria buat semua pembaca budiman. Kita bertemu kembali di dalam ruangan Genius Corner kali ini. Pada minggu ini, kita akan pelajari latihan Php bahagian ke sepuluh, kaedah memuat turun file dari server menggunakan Php.

 

Di dalam artikel Genius Corner siri ke-32, kita telah pelajari kaedah memuat naik fail dari komputer ke server. Oleh itu, artikel Genius Corner kali ini akan memaparkan latihan yang menjadi pasangan kepada latihan terbabit.

 

Kedua-dua kaedah ini amat penting di dalam operasi sesebuah sistem berasaskan web. Kebolehan memuat naik dan memuat turun fail memberi impak tinggi kepada pengguna, terutamanya sistem sosial seperti Facebook dan Instagram.

 

Tanpa membuang masa, mari kita mulakan latihan kali ini.

 

Latihan

 

Langkah 1: Buka mana-mana text editor yang anda miliki seperti Notepad (Windows) atau TextEdit (MacOS) dan tuliskan kod aturcara berikut.

 

<!DOCTYPE html>

<html lang=”en”>

<head>

<meta charset=”UTF-8″>

<title>Simple Image Gallery</title>

<style type=”text/css”>

   .img-box{

       display: inline-block;

       text-align: center;

       margin: 0 15px;

   }

</style>

</head>

<body>

   <?php

   // Array containing sample image file names

   $images = array(“kites.jpg”, “balloons.jpg”);

   

   // Loop through array to create image gallery

   foreach($images as $image){

       echo ‘<div class=”img-box”>’;

           echo ‘<img src=”images/’ . $image . ‘” width=”200″ alt=”‘ .  pathinfo($image, PATHINFO_FILENAME) .'”>’;

           echo ‘<p><a href=”download.php?file=’ . urlencode($image) . ‘”>Download</a></p>’;

       echo ‘</div>’;

   }

   ?>

   

   <?php

   if(isset($_REQUEST[“file”])){

       // Get parameters

       $file = urldecode($_REQUEST[“file”]); // Decode URL-encoded string

       $filepath = “images/” . $file;

       

       // Process download

       if(file_exists($filepath)) {

           header(‘Content-Description: File Transfer’);

           header(‘Content-Type: application/octet-stream’);

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

           header(‘Expires: 0’);

           header(‘Cache-Control: must-revalidate’);

           header(‘Pragma: public’);

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

           flush(); // Flush system output buffer

           readfile($filepath);

           exit;

       }

   }

   ?>

</body>

</html>

 

Langkah 2: Save hasil kerja anda tadi dengan nama download.php ke dalam folder Genius Corner seperti latihan terdahulu.

 

Langkah 3: Masukkan lokasi fail tadi di dalam ruang alamat internet pelayar untuk melihat hasilnya melalui pelayar web.

Semakan

 

Melalui latihan tadi, kita telah menghasilkan sebuah fungsi yang membolehkan pengunjung laman web memuat turun fail terus dari server, dan bukan membukanya di dalam paparan pelayar.

 

Pada setiap tag anchor <a>, library “file” telah dirujuk sebagai menandakan bahawa imej yang terdapat pada paparan bakal dimuat turun ke komputer pengunjung. Seterusnya, arahan global $_REQUEST[“file”] digunakan untuk melaksanakan operasi muat turun dengan selamat.

 

Akhir sekali, library header() digunakan untuk memasukkan maklumat tambahan kepada imej yang dimuat turun tadi. Library ini memudahkan peranti yang menerima imej tadi untuk membuat rujukan berdasarkan kepelbagaian maklumat yang disediakan.

Pelajar SK Desa Murni sedang mengikuti bengkel Scratch TMK

 

Soalan

 

Sebelum ruangan minggu ini ditamatkan, anda perlu menyelesaikan beberapa soalan latihan. Sila ubahsuai kod aturcara tadi supaya:

 

  1. Gunakan imej bmp berbanding jpg yang terdapat dalam contoh
  2. Tambah jumlah imej dari 2 kepada 5 imej
  3. Ubah saiz paparan imej kepada 500 pixel

 

Jika anda mempunyai sebarang pertanyaan atau cadangan, sila emailkan kepada farizgaskin@gmail.com dan kami akan cuba jawab sepantas mungkin. Sehingga bertemu lagi dalam ruangan yang sama minggu hadapan, selamat mencuba!