Mengatasi PHP Tidak Bisa Upload File / Gambar di Hosting

Muhammad Fajar, 03-05-2024

Jika function PHP tidak bisa upload gambar (gambar tersimpan di hosting tapi 0 byte) coba periksa error_log di project tersebut. Kemungkinan karena saat memindahkan file dari temporary storage itu tidak menemukan folder yang dituju karena berbeda direktori terutama pada hosting online. Gunakan fungsi getcwd().DIRECTORY_SEPARATOR untuk mengambil direktori yang tepat sebelum memasukkan alamat folder/direktori yang dituju. Berikut contohnya:


// FUNCTION UPLOAD THUMBNAIL

function upload()

{

    $namaFile = $_FILES['thumbnail']['name'];

    $ukuranFile = $_FILES['thumbnail']['size'];

    $error = $_FILES['thumbnail']['error'];

    $tmpName = $_FILES['thumbnail']['tmp_name'];


    // cek apakah tidak ada gambar yang diupload

    if ($error === 4) {

        echo "<script>

            alert('Pilih gambar terlebih dahulu!');

            </script>";

        return false;

    }


    // cek apakah yang diupload adalah gambar

    $ekstensiGambarValid = ['jpg', 'jpeg', 'png'];

    $ekstensiGambar = explode('.', $namaFile);

    $ekstensiGambar = strtolower(end($ekstensiGambar));

    if (!in_array($ekstensiGambar, $ekstensiGambarValid)) {

        echo "<script>

            alert('File yang diupload bukan gambar!');

            </script>";

        return false;

    }


    // cek jika ukurannya terlalu besar

    if ($ukuranFile > 10485760) {

        echo "<script>

            alert('Ukuran gambar terlalu besar! Max 10MB');

            </script>";

        return false;

    }


    // lolos pengecekan, gambar siap diupload

    // generate nama gambar baru

    $namaFileBaru = uniqid();

    $namaFileBaru .= '.';

    $namaFileBaru .= $ekstensiGambar;


    move_uploaded_file($tmpName, getcwd().DIRECTORY_SEPARATOR. 'img/thumbnail/' . $namaFileBaru);


    return $namaFileBaru;

}