PHP Series : Upload File Dalam PHP
Hallo, pada seri PHP kali ini kita akan belajar upload file ke dalam direktori server menggunakan script PHP.
Bahasa pemrograman PHP mendukung upload file pada remote server. Anda bisa menunggah berkas apa saja ke dalam deirektori server seperti berkas gambar (JPG, GIF, PNG), arsip (ZIP, RAR, 7ZIP) Dokumen (PDF, PPT, XLS,DOC) dan lain-lain. Anda juga bisa mengatur batas maksimal ukuran berkas yang akan di upload pada konfigurasi PHP yang terletak pada file php.ini .
Dibawah ini kita akan membuat sebuah form HTML yang berfungsi untuk mengunggah sebuah berkas dan memprosesnya dengan PHP. Mari kita ikuti langkah-langkah dibawah ini :
1. Buatlah sebuah form HTML untuk mengunggah sebuah berkas.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Form Upload File</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <h2>Upload File</h2> <label for="pilihfile">Nama File:</label> <input type="file" name="foto" id="filihfile"> <input type="submit" name="submit" value="Unggah"> <p><strong>Catatan:</strong> Format yang diizinkan hanya: .jpg, .jpeg, .gif, .png dengan ukuran maksimal 5 MB.</p> </form> </body> </html>Output Program :
2. Memproses File Upload dengan PHP
Buatlah file PHP bau dengan nama upload.php sesuai dengan form action diatas. Kita akan membuat script PHP yang akan memproses permintaan upload dari form HTML yang kita buat sebelumnya. Pada script ini kita bisa menentukan format file yang akan diupload, ukuran file yang akan diupload dan menentukan direktori tempat meletakkan berkas setelah di upload.
<?php // Cek jika form telah disubmit if($_SERVER["REQUEST_METHOD"] == "POST"){ // Cek untuk memastikan file sudah diupload tanpa ERROR if(isset($_FILES["foto"]) && $_FILES["foto"]["error"] == 0){ $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png"); $filename = $_FILES["foto"]["name"]; $filetype = $_FILES["foto"]["type"]; $filesize = $_FILES["foto"]["size"]; // Verifikasi ekstensi file $ext = pathinfo($filename, PATHINFO_EXTENSION); if(!array_key_exists($ext, $allowed)) die("Error: Format file tidak diizinkan."); // Verifikasi ukuran maksimal file 5 MB $maxsize = 5 * 1024 * 1024; if($filesize > $maxsize) die("Error: Ukuran File melebihi ukuran yang ditentukan."); // Verify MYME type of the file if(in_array($filetype, $allowed)){ // Cek keberadaan file if(file_exists("upload/" . $filename)){ echo $filename . " file sudah ada !!."; } else{ move_uploaded_file($_FILES["foto"]["tmp_name"], "upload/" . $filename); echo "Berkas berhasil diunggah."; } } else{ echo "Error: Gagal mengunggah berkas."; } } else{ echo "Error: " . $_FILES["foto"]["error"]; } } ?>
Penjelasan dari kode diatas adalah :
- $ _FILES ["foto"] ["name"] - Nilai array ini menentukan nama asli file, termasuk ekstensi file. Tetapi bukan termasuk jalur file.
- $ _FILES ["photo"] ["type"] - Nilai array ini menentukan tipe MIME dari file.
- $ _FILES ["photo"] ["size"] - Nilai array ini menentukan ukuran file, dalam bytes.
- $ _FILES ["foto"] ["tmp_name"] - Nilai array ini menentukan nama sementara termasuk path lengkap yang ditugaskan ke file setelah diunggah ke server.
- $ _FILES ["foto"] ["error"] - Nilai array ini menentukan kesalahan atau kode status yang terkait dengan unggahan file, misal akan menjadi 0, jika tidak ada kesalahan.