Site icon agussuratna.net

Tutorial PHP : #27 Membuat Upload File Dengan PHP Dan MySQL

Upload file adalah salah satu yang penting di dalam membuat aplikasi, khususnya aplikasi berbasis web. Pada aplikasi biasanya kita diharuskan membuat upload file, bisa itu fitur upload file laporan, atau mungkin upload file gambar. Contohnya di facebook terdapat fitur untuk mengupload gambar untuk dijadikan photo profil dan contoh aplikasi lain yang harus ada fitur upload filenya adalah aplikasi manajemen arsip, contoh nya manajemen arsip kantor, dimana data-data pdf atau document lainnya bisa diupload untuk diarsipkan.

Pada tutorial kali ini kita akan membuat upload file dengan PHP dan MySQL dan menyimpan file gambarnya ke server dan kemudian nama dari file tersebut akan kita simpan pada database.

Berikut langkah-langkah untuk membuat upload file dengan PHP dan MySQL :

  1. Buat database, misal dengan nama database uploadfile dan buat 1 table dengan nama tbl_file, dengan skema table seperti berikut :
  2. Buat file project di dalam htdocs, misal nama nama folder uploadfile
  3. Buat file koneksi.php di dalam folder uploadfile tersebut, dengan sintak seperti berikut :
    <?php 
        $server = "localhost"; //sesuaikan dengan nama server 
        $pengguna = "root"; //sesuaikan username 
        $katakunci = ""; //sesuaikan password 
        $namadb = "uploadfile"; //sesuaikan nama database 
        
        $datakoneksi = mysqli_connect($server, $pengguna, $katakunci, $namadb); 
        if (mysqli_connect_errno()) { 
            echo "Gagal terhubung MySQL: " . mysqli_connect_error(); 
        } 
    ?>

     

  4. Selanjutnya file index.php karena kita akan membuat form upload file di file index.php ini, isi dengan sintak seperti berikut :
    <html>
        <head>
            <title>Membuat Upload File Dengan PHP Dan MySQL</title>
        </head>
    
        <body>
            <h1>Membuat Upload File Dengan PHP Dan MySQL</h1>
            <form action="upload_aksi.php" method="post" enctype="multipart/form-data">
                <input type="file" name="file">
                <input type="submit" name="upload" value="Upload">
            </form>
        </body>
    </html>

    Ada perbedaan pada form upload file dengan form biasa yang telah kita bahas sebelumnya. Perhatikan pada element form di atas, terdapat sintak :

    <form action="upload_aksi.php" method="post" enctype="multipart/form-data">

    Terdapat atribut enctype yang berfungsi untuk memberikan intruksi pada php bahwa form ini berupa form untuk mengupload file.

  5. Buat file upload_aksi.php dengan sintak seperti berikut :
    <!DOCTYPE html>
    <html>
        <head>
            <title>Membuat Upload File Dengan PHP Dan MySQL</title>
        </head>
    
        <body>
            <h1>Membuat Upload File Dengan PHP Dan MySQL</h1>
    
            <?php
            include "koneksi.php";
    
            if ($_POST['upload']) 
            {
                //menentukan ekstensi file yang boleh diuapload
                $ekstensi_diperbolehkan = ['png', 'jpg', 'jpeg'];
                
                $nama       = $_FILES['file']['name'];
                $x          = explode('.', $nama);
                $ekstensi   = strtolower(end($x));
                $ukuran     = $_FILES['file']['size'];
                $file_tmp   = $_FILES['file']['tmp_name'];
    
                if (in_array($ekstensi, $ekstensi_diperbolehkan) === true) 
                {
                    if ($ukuran < 1044070) 
                    {
                        move_uploaded_file($file_tmp, 'gambar/' . $nama);
    
                        $query = mysqli_query($datakoneksi,"INSERT INTO tbl_file VALUES(NULL, '$nama')");
    
                        if ($query) 
                        {
                            echo 'FILE BERHASIL DI UPLOAD';
                        } 
                        else 
                        {
                            echo 'GAGAL MENGUPLOAD GAMBAR';
                        }
                    } 
                    else 
                    {
                        echo 'UKURAN FILE TERLALU BESAR';
                    }
                } 
                else 
                {
                    echo 'EKSTENSI FILE YANG DI UPLOAD TIDAK DI PERBOLEHKAN';
                }
            }
            ?>
    
            <br/>
    
            <a href="index.php">Upload Lagi</a>
    
            <br/>
    
            <table>
                <?php
                    $data = mysqli_query($datakoneksi,"SELECT * FROM tbl_file");
    
                    while ($d = mysqli_fetch_array($data)) 
                    { 
                ?>
    
                    <tr>
                        <td>
                            <img src="<?php echo 'gambar/' . $d['namafile']; ?>">
                        </td>
                    </tr>
    
                <?php 
                    }
                ?>
    
            </table>
    
        </body>
    </html>

    Perhatikan sintak di atas, pertama hubungkan dulu dengan file koneksi.php, agar php terhubung dengan database mysql.

    include 'koneksi.php';

    Selanjutnya pada sintak :

    //menentukan ekstensi file yang boleh diuapload
    $ekstensi_diperbolehkan = ['png', 'jpg', 'jpeg'];
    
    $nama       = $_FILES['file']['name'];
    $x          = explode('.', $nama);
    $ekstensi   = strtolower(end($x));
    $ukuran     = $_FILES['file']['size'];
    $file_tmp   = $_FILES['file']['tmp_name'];

    Perintah di atas adalah perintah untuk mendapatkan data file yang di upload, misalnya :

    • $_FILES[‘file’][‘name’]            = berguna untuk mendapatkan nama file yang di upload.
    • $_FILES[‘file’][‘size’]                = mendapatkan ukuran file yang di upload.
    • $_FILES[‘file’][‘tmp_name’] = untuk mendapatkan temporary file yang di upload (tmp).

    Pada variabel $ekstensi_diperbolehkan kita inisialisasi dengan ekstensi file yang diperbolehkan untuk diupload, ini berguna untuk keamanan. Jadi user nantinya tidak bisa mengupload sembarangan file karena alasan keamanan, jadi kita hanya memperbolehkan untuk mengupload file gambar saja yang berekstensi .png, .jpg dan .jpeg, kita bisa menyesuaikan file apa saja yang mau diupload.

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

    Selanjutnya pada sintak :

    if (in_array($ekstensi, $ekstensi_diperbolehkan) === true) 
    {
        if ($ukuran < 1044070) 
        {
            move_uploaded_file($file_tmp, 'gambar/' . $nama);
    
            $query = mysqli_query($datakoneksi,"INSERT INTO tbl_file VALUES(NULL, '$nama')");
    
            if ($query) 
            {
                echo 'FILE BERHASIL DI UPLOAD';
            } 
            else 
            {
                echo 'GAGAL MENGUPLOAD GAMBAR';
            }
        } 
        else 
        {
            echo 'UKURAN FILE TERLALU BESAR';
        }
    } 
    else 
    {
        echo 'EKSTENSI FILE YANG DI UPLOAD TIDAK DI PERBOLEHKAN';
    }

    Disini kita memeriksa ekstensi file yang diupload dengan mengecek apakah ekstensi file yang diupload sesuai dengan nama ekstensi yang telah kita tetapkan di variabel array $ekstensi_diperbolehkan tadi, jika tidak maka tidak akan diupload dan ditampilkan pesan bahwa ekstensi file yang diupload tidak diperbolehkan.

    Lalu memeriksa ukuran file yang diupload, kita menetapkan ukuran maksimalnya sebesar 1 MB, jadi di sini kita menggunakan nested if dalam seleksinya.

    if($ukuran < 1044070)

    Jika file yang diupload lebih besar dari 1 MB maka akan ditampilkan pesan “ukuran file terlalu besar”, jika ukuran file nya sesuai maka proses upload akan di lanjutkan lagi.

    move_uploaded_file($file_tmp, 'gambar/' . $nama);
    
    $query = mysqli_query($datakoneksi,"INSERT INTO tbl_file VALUES(NULL, '$nama')");
    
    if ($query) 
    {
        echo 'FILE BERHASIL DI UPLOAD';
    } 
    else 
    {
        echo 'GAGAL MENGUPLOAD GAMBAR';
    }

    Disinilah inti upload file dengan php dan mysql nya, fungsi move_uploaded_file() berfungsi untuk mengupload atau dengan kata lain degan fungsi inilah yang bertugas untuk memindahkan file yang diupload tadi dari temporary file menuju ke folder file dan memberikan nama file nya sesuai yang kita tentukan. Jadi disini kita bisa menentukan tujuan file uploadnya kemana, maksudnya disimpan ke mana file yang diupload, karena di sini kita telah menyediakan folder “gambar” untuk menyimpan gambar nya maka kita tujukan ke folder file.

    Terakhir kita insert data nama file yang diupload ke database :

    $query = mysqli_query($datakoneksi,"INSERT INTO tbl_file VALUES(NULL, '$nama')");

 

Selanjutnya kita coba jalankan melalui browser melalui alamat http://localhost/uploadfile dan hasilnya seperti berikut ini :

Dan data dari file name gambar tersebut tersimpan di database.

Demikian tutorial membuat upload file dengan PHP dan MySQL, semoga bermanfaat.

Exit mobile version