Upload File dalam PHP

Kali ini kita akan mempelajari cara membuat form untuk upload file. Yang kita perlukan adalah tag form dan tag input. Untuk tag input atribut type-nya adalah "file". Selain itu, tentu saja kita butuh tombol submit yang akan mengarah ke file php yang akan memproses file yang akan diupload. Kali ini, namai saja file tujuannya dengan nama "fileku.php".

<!DOCTYPE>
<html>
<body>
<form action="fileku.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" id="fileToUpload">
    <BR /><BR />
    <input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>


Setelah selesai, simpan di file index.php!
Setelah disimpan kita bisa melihat hasilnya dengan menjalankannya, tentu saja dengan mengetikkan localhost di browser beserta nama foldernya (jika file index.php ada bukan di folder utama).

Jika file index.php sudah disimpan, sekarang kita buat file tujuannya yang bernama "file.php". Buat file baru dan isi dengan script php berikut ini.

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =  strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File adalah sebuah image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is bukan sebuah image.";
        $uploadOk = 0;
    }
}


if (file_exists($target_file)) {
    echo "Maaf, file sudah ada.";
    $uploadOk = 0;
}


if ($_FILES["fileToUpload"]["size"] > 1024000) {
    echo "Maaf ukuran file anda terlalu besar.";
    $uploadOk = 0;
 }


if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Maaf, hanya JPG, JPEG, PNG & GIF yang dibolehkan";
    $uploadOk = 0;
}


if ($uploadOk == 0) {
    echo "Maaf, file anda tidak terupload.";
}else{
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "File ". basename( $_FILES["fileToUpload"]["name"]). " sudah diupload.";
    } else {
        echo "Maaf, ada error.";
    }
}
?>


Pada contoh di atas, kita membatasi ukuran file maksimal sebesar 1024000 byte. Kita juga membatasi jenisnya dengan jenis file yang extensinya JPG, JPEG, PNG, dan GIF. Satu lagi syaratnya adalah file harus belum ada. Jika syarat tidak terpenuhi, maka file tidak diupload.

Beberapa hal yang perlu diperhatikan, yaitu :
  1. Kita butuh form dengan minimal satu tag input bertipe file, dan juga satu tombol submit.
  2. Methodnya harus berupa bentuk post.
  3. enctype="multipart/form-data" wajib ada sebagai atribut form.
  4. Kita tidak menggunakan $_POST walaupun methodnya adalah post, tapi yang kita gunakan adalah "$_FILE".
  5. File dimasukkan ke folder tujuan dengan fungsi move_uploaded_file.
Saat mengupload file, kita akan bisa menggunakan variabel $_FILES. Variabel ini berisi informasi-informasi terkait file yang kita upload. Jika ada file yang diupload saat tombol submit dari form ditekan, ada beberapa key dalam array $_FILES. Misalnya, jika file berasal dari input dengan tipe file dengan nama fileku, maka kita bisa menggunakan :
  1. $_FILES['fileku']['tmp_name'] − nama sementara file yang sudah diupload ke server.
  2. $_FILES['fileku']['name'] − nama asli file yang diupload.
  3. $_FILES['fileku']['size'] − ukuran file dalam byte.
  4. $_FILES['fileku']['type'] − MIME type dari file yang diupload.
  5. $_FILES['fileku']['error'] − error terkait file yang diupload.