Cara Membuat Multiple Upload File dengan PHP disertai Validasi

Cara Membuat Multiple Upload File dengan PHP – Multiple upload file merupakan fitur yang memungkinkan untuk mengunggah lebih dari satu file dalam satu waktu ke server web menggunakan PHP. Ini bisa sangat berguna dalam beberapa situasi, seperti saat ingin mengunggah banyak file atau dokumen ke dalam sebuah aplikasi web.

Cara membuat multiple upload file dengan PHP, di sini kita hanya bermain-main dengan beberapa atribut form HTML utama, yakni enctype=”multipart/form-data” dan multiple pada form HTML kita. Untuk PHP-nya, kita dapat menggunakan variabel super global $_FILES.

Persiapan Pembuatan

Sebelum kita memulai membuat fitur upload file lebih dari satu atau multiple upload file dengan PHP, silahkan Anda siapkan beberapa hal berikut ini.

  1. Pastikan web server (XAMPP/Laragon) Anda sudah aktif.
  2. Buat file baru dengan upload.html yang digunakan untuk menampilkan form HTML upload file PHP.
  3. Buat file baru lagi dengan nama upload.php yang digunakan untuk memproses file yang akan diupload.

Jika ketiga hal di atas sudah dipenuhi, silahkan simak penjelasan langkah-langkah cara membuat fitur upload file lebih dari satu dengan bahasa pemrograman PHP.

Cara Membuat Multiple Upload File dengan PHP

Berikut langkah-langkah cara membuat fasilitas multiple upload file lebih dari satu dengan bahasa pemrograman PHP.

Membuat Form HTML Upload File

Pada langkah pertama ini, silahkan buat file form HTML baru dengan nama upload.html, kemudian masukkan kode HTML berikut ke dalamnya, lalu simpan.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Upload File dengan PHP</title>
  </head>
  <body>
    <form action="upload.php" method="POST" enctype="multipart/form-data">
      <input type="file" name="files[]" multiple>
      <input type="submit" name="submit" value="UPLOAD">
    </form>
  </body>
</html>

Dalam kode form HTML di atas, dapat kita lihat terdapat atribut HTML dengan files[] dan multiple. Dimana keduanya berfungsi untuk menangkap jumlah file yang dipilih oleh pengguna.

Kode form HTML di atas belum bisa untuk memproses file yang dipilih, oleh karenanya kita perlu bantuan dari bahasa pemrograman untuk menangani proses di balik layarnya. Silahkan lanjut ke langkah kedua berikut.

Membuat Proses Upload File PHP

Pada langkah kedua ini, silahkan buat file PHP baru dengan nama upload.php, kemudian masukkan kode PHP berikut ke dalamnya, lalu simpan.

<?php
  if(isset($_POST['submit'])) {
    // Cek apakah form sudah berisi file.
    if(isset($_FILES['files'])) {
      // Hitung jumlah file.
      $files = $_FILES['files'];
      $count_files = count($files['name']);
      // Cek jumlah file.
      if($count_files > 0) {
        // Mengekstrak file.
        for($i = 0; $i < $count_files; $i++) {
          // Jika terdapat file yang masuk maka lanjutkan proses.
          if(!empty($files['name'][$i])) {
            // Cek error selama proses upload hingga 5 level error.
            if($files['error'][$i]) {
              $messages = [
                1 => 'The uploaded file exceeds the UPLOAD_MAX_FILESIZE directive in php.ini',
                2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
                3 => 'The uploaded file was only partially uploaded',
                4 => 'No file was uploaded',
                5 => 'Missing a temporary folder'
              ];
              echo '<b>Warning!</b>: '.$messages[$files['error'][$i]];
            }
            // Cek data di setiap file.
            $file_name      = $files['name'][$i]; // Nama file.
            $file_size      = $files['size'][$i]; // Ukuran file.
            $file_type      = $files['type'][$i]; // Jenis file.
            $file_ext       = strtolower(pathinfo($file_name, PATHINFO_EXTENSION)); // Ekstensi file.
            $file_directory = 'uploads'; // Silahkan ganti dengan nama direktori yang diinginkan.
            $allowed_ext    = 'jpg, png'; // Silahkan tambahkan ekstensi yang ingin didukung.
            // Cek ketersediaan direktori.
            if(!is_dir($file_directory)) {
              mkdir($file_directory); // Buat direktori jika tidak ada.
            }
            if($file_size > ((1024 * 1024) * 10)) {
              // Cek ukuran file.
              echo ($i + 1).'. <b style="color:red;"><i>'.$file_name.'</i></b> ukuran terlalu besar!<br/>';
            } elseif(file_exists($file_directory.'/'.$file_name)) {
              // Cek apakah file sudah diupload
              echo ($i + 1).'. <b style="color:red;"><i>'.$file_name.'</i></b> telah ada!<br/>';
            } elseif(!in_array(strtolower($file_ext), explode(',', strtolower(str_replace(' ', '', $allowed_ext))))) {
              // Validasi ekstensi file.
              echo ($i + 1).'. <b style="color:red;"><i>'.$file_name.'</i></b> ekstensi tidak valid!<br/>';
            } else {
              
              // Memindahkan file.
              $move = move_uploaded_file($_FILES['files']['tmp_name'][$i], $file_directory.'/'.$file_name.'');
              if($move) {
                echo ($i + 1).'. <b style="color:green;"><i>'.$file_name.'</i></b> berhasil diupload!<br/>';
              } else {
                echo ($i + 1).'. <b style="color:red;"><i>'.$file_name.'</i></b> gagal diupload!<br/>';
              }
            }
          } else {
            echo 'Anda belum memilih file!
            <br/><a href="javascript: history.back(-1);"><< Kembali</a>';
          }
        }
      }
    }
  }
?>

Setiap proses yang terjadi pada file upload PHP di atas sudah saya sertakan penjelasan singkat mengenai proses yang terjadi.

Salah satu proses yang terjadi adalah bahwa kode PHP di atas dapat secara otomatis membuat folder atau direktori yang digunakan untuk menampung hasil file yang diupload. Selain itu, proses upload file juga sudah dilengkapi dengan validasi ekstensi file yang didukung.

Dalam beberapa kasus, mengunggah file dalam jumlah besar, secara simultan dapat membebani server hosting yang Anda gunakan. Terkadang juga terdapat masalah proses upload file akibat pembatasan pada file php.ini.

Penutup

Demikian tutorial cara membuat upload file lebih dari satu sekaligus dengan menggunakan bahasa pemrograman PHP. Silahkan lakukan langkah-langkah di atas dan jika terdapat error, silahkan tanyakan di kolom komentar di bawah.

Bagikan Ke

Leave a Reply

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *