Cara upload multiple file dengan PHP — Terkadang kita perlu untuk mengizinkan pengguna untuk mengupload lebih dari satu file (multiple) dengan PHP.

Sebagai contoh adalah Facebook yang mempersilahkan penggunanya untuk mengupload lebih dari satu foto dalam satu waktu kedalam sebuah gallery foto. Atau layanan email yang memungkinkan kita melampirkan lebih dari satu file ketika hendak mengirim email.

Sebelumnya kita sudah pernah bahas bagaimana cara upload file dengan php, kali ini Jurnalweb.com akan menunjukan kepada Anda bagaimana cara mengupload multiple file dengan PHP.

Cara ini sebenarnya hampir sama dengan cara mengupload file yang dulu pernah kita bahas, namun untuk ini kita hanya perlu memodifikasi sedikit markup HTML dan kode PHP nya. Pada HTML kita memerlukan atribut multiple, beberapa web browser utama seperti Firefox, Chrome, Safari dan IE9 keatas sudah mendukung atribut ini.

upload multiple file php

Cara upload lebih dari satu file dengan PHP

Kode HTML

Agar kita bisa mengupload lebih dari satu file, maka kita memerlukan form html sederhana yang disertai dengan sebuah field input dengan property file dan submit.

Kita juga perlu untuk memberikan field input tersebut nama files[] serta menambahkan property multiple, sedangkan pada bagian accept hanyalah opsional dimana kita bisa mengatur file apa saja yang dibolehkan, pada contoh accept="image/*" berarti membolehkan pengguna untuk memilih hanya file gambar saja dari komputer mereka.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Multiple File Upload dengan PHP | Jurnalweb.com</title>
</head>
<body>
	<form action="" method="post" enctype="multipart/form-data">
		<input type="file" id="file" name="files[]" multiple="multiple" accept="image/*" />
		<input type="submit" value="Upload!">
	</form>
</body>
</html>

Script PHP

Untuk menangani file gambar yang dikirim, kita membutuhkan script PHP sebagai berikut.

$format_file = array("jpg", "png", "gif", "zip", "bmp");
$max_file_size = 1024*100; //maksimal 100 kb
$path = "uploads/"; // Lokasi folder untuk menampung file
$count = 0;

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
	// Loop $_FILES to exeicute all files
	foreach ($_FILES['files']['name'] as $f => $name) {     
	    if ($_FILES['files']['error'][$f] == 4) {
	        continue; // Skip file if any error found
	    }	       
	    if ($_FILES['files']['error'][$f] == 0) {	           
	        if ($_FILES['files']['size'][$f] > $max_file_size) {
	            $message[] = "$name is too large!.";
	            continue; // Skip large files
	        }
			elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $format_file) ){
				$message[] = "$name is not a valid format";
				continue; // Skip invalid file formats
			}
	        else{ // No error found! Move uploaded files 
	            if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.$name))
	            $count++; // Number of successfully uploaded file
	        }
	    }
	}
	echo 'berhasil upload '.$count.' files';
}

Script diatas akan melakukan looping untuk mengupload semua file gambar yang kita pilih. Jangan lupa untuk membuat folder dengan nama “uploads” ketika Anda mencoba di komputer Anda.

Download Source Code

Semoga tutorial singkat diatas bisa membantu mengatasi masalah Anda, sampai jumpa lagi pada tutorial jurnalweb lainnya.