Freebies MySQL PHP

Membuat Web Simple Upload dan Download File dengan PHP MySQL

Written by Fatoni

Membuat Web Simple Upload dan Download File dengan PHP MySQL. Oke, pada kesempatan kali ini saya akan membuat sebuah website untuk Upload dan Download File dengan PHP dan MySQL. Dimana nantinya User bisa melakukan Upload file di menu Upload, dan kemudian file yang di Upload bisa di Download pada menu Download.

Beberapa fitur yang akan dibuat adalah:

  • User bisa Upload
  • User bisa Download
  • Pembatasan pada ektensi file yang bisa di Upload, hanya bisa Upload file dengan ekstensi doc, docx, xls, xlsx, ppt, pptx, pdf, rar, zip (bisa dirubah)
  • Pembatasan file size 1 MB (bisa dirubah)

Dan berikut ini adalah screenshot dari file-file yang akan dibuat

Membuat Web Simple Upload dan Download File dengan PHP MySQL

Oke, langsung saja mulai ke tutorialnya.

Pertama seperti biasanya buat dahulu sebuah database di phpMyAdmin. Disini saya membuat database dengan nama tutorial, kemudian Dumping kode SQL di bawah ini

Atau bisa juga dengan meng-Import file database.sql yang sudah disertakan pada file download di bawah halaman ini.

Database dan Table sudah dibuat, sekarang kita buat dahulu script untuk melakukan koneksi ke database.

Buat file baru dan beri nama config.php, dan kodenya seperti di bawah ini:

Nah, dari kode di atas kita sudah bisa melakukan koneksi ke database, jangan lupa mengedit detail koneksi ke database milik anda sendiri.

Dan juga dari kode di atas, dibuat sebuah fungsi untuk mengkonversi file size dari file yang di upload nantinya.

Sekarang saatnya buat file yang pertama yaitu index.php. dan berikut ini isi kodenya:

Dalam file index.php ini tidak ada yang spesial, hanya salam perkenalan saja πŸ™‚

Selanjutnya buat file baru dengan nama upload.php, dan isi kodenya seperti di bawah ini

File ini akan membuat Form untuk Upload File dan juga Proses untuk Upload File.

Berikut ini sedikit penjelasan Kode dari file upload.php

Line Penjelasan Kode
57-69 Membuat form yang berisi inputan judul, inputan pemilihan file, dan tombol untuk upload
26 meng-include-kan file config.php yang berisikan koneksi ke database
28 membuat array yang berisikan file ber-ekstensi apa saja yang bisa di upload
29-32 mendeklarasikan beberapa properti dari inputan file, seperti nama file, file ekstensi, file size, dan file tmp
34-35 mendeklarasikan judul dan tanggal sekarang
37 pengecekan apakah file ekstensi ada dalam array ekstensi yang di izinkan, jika ada (true) maka berhasil
38 pengecekan apakah file size tidak lebih besar dari 1044070 (1Mb), jika lebih kecil, maka berhasil
39 menentukan lokasi menyimpanan/upload file, yaitu file akan di upload didalam folder files, dan merubah nama file yang diupload menjadi judul yang di inputkan tadi.
40 melakukan proses upload dengan fungsi move_uploaded_file()
41 melakukan query ke database untuk melakukan perintah INSERT data
43 pesan jika file berhasil di upload dan data tersimpan ke database

Dan sekarang buat file lagi dan beri nama download.php, dan isi kodenya seperti di bawah ini

Dalam file download ini akan menampilkan sebuah Table yang berisi file-file yang telah di upload, dan akan ada link untuk men-Download file tersebut.

Berikut ini sedikit penjelasan dari file download.php

Line Penjelasan Kode
26-59 membuat table seperti biasa
35 meng-include-kan file config.php yang berisi kode untuk melakukan koneksi ke database
36 melakukan query ke database dengan perintah SELECT dari table download dan di urutkan berdasarkan id yang paling besar
37 jika query diatas menghasilkan nilai > 0 (terdapat data di dalam tabel) maka akan melakukan perintah dibawahnya
38 membuat variabel untuk nomor urut
39 melakukan perulangan while dari query SELECT pada line 37
40-49 menampilkan data dari perulangan yang mengambil dari table download
51-57 jika query pada line 37 menghasilkan nilai 0 (tidak ada data di database) maka akan menuliskan “pesan tidak ada data”

Untuk mempercantik tampilannya, di bawah ini adalah kode CSS-nya, dan simpan dengan nama style.css.

Nah, sudah selesai. Jangan lupa za untuk Rate, Like dan Share artikel ini. Kalau mau download file yang sudah jadi bisa di bawah ini.

Download & Demo:
β€’ β€’

Password:

Update tutorial terbaruΒ DISINI

ORDER FILE MANAGEMENT PRO

About the author

Fatoni

Programming is my hobby, not my job.

804 Comments

  • kalau ini gimana gan ?

    Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/u336487283/public_html/hosting/config.php on line 3

      • kode yang bagian upload.php
        <?php
        include('config.php');
        if($_POST['upload']){
        $allowed_ext = array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf', 'rar', 'zip');
        $file_name = $_FILES['file']['name'];
        $file_ext = strtolower(end(explode('.', $file_name)));
        $file_size = $_FILES['file']['size'];
        $file_tmp = $_FILES['file']['tmp_name'];

        $nama = $_POST['nama'];
        $tgl = date("Y-m-d");

        yang maksudnya ( if($_POST['upload']) )
        yang "upload" itu apa ya ?

  • gan kalo misalnya saya ingin menggunakan framework laravel, nah fungsi konversi yg di config.php itu dipanggilnya di file mana yah? di upload.php atau index atau download? tolong dijelaskan lebih rinci gan mengenai fungsi tersebut

  • kak ini solusinya gmna yah?
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\udin-simalungun\download.php on line 43 trimakasih

  • mas mau tanya ,
    dihalaman download.php, sewaktu mau download file (kursor diarahkan ke link download di browser) sebelah kiri bawah kan ada alamatnya “http://localhost/namaroot/files/namafile.xlsx” ya, itu ubahnya dari script yg mana ya?
    Aku utak atik kok malah keubah jadi “http://localhost/namaroot/namafile.xlsx” ya?

    mohon bantuannya mas

    makasih

  • gan mau tanya?
    pas mau download ada tulisannya begini ? jadi gak bisa didownload

    Warning: move_uploaded_file(files/de.docx) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\web\upload.php on line 16

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move ‘C:\xampp\tmp\phpB1F9.tmp’ to ‘files/de.docx’ in C:\xampp\htdocs\web\upload.php on line 16
    SUCCESS: File berhasil di Upload!

    16.move_uploaded_file($file_tmp, $lokasi);
    17.$in = mysql_query(“INSERT INTO download VALUES(NULL, ‘$tgl’, ‘$nama’, ‘$file_ext’, ‘$file_size’, ‘$lokasi’)”);

    jadi bisa upload tap pas didwonload tidak bisa

    • kalau masih ada pesan warning pada upload.php nya kmu msh belum bisa download file, coba periksa di file upload.php dan temui script :

      $lokasi = ‘files/’.$nama.’.’.$file_ext;

      hilangkan tanda “/” menjadi

      $lokasi = ‘files’.$nama.’.’.$file_ext;

      itu salah satu contoh, yg penting coba saja hilangkan tanda “/” nya

  • cara nya bisa d hapus gmn ya gan d folder files nya??
    syntax ini pun gagal hapus d folder files
    <?php

    include'config.php';

    $id = $_GET['id'];

    $query="SELECT * FROM tb_proposal WHERE id='$id'";
    $result =mysql_query($query);
    $data = mysql_fetch_array($result);
    $namaFile = $data['nama_file'];

    //query untuk menghapus

    $query="DELETE FROM tb_proposal WHERE id='$id'";
    mysql_query($query);

    //menghapus file dalam folder sesuai namanya
    unlink("upload_proposal/files/".$namaFile);
    echo"alert(‘File berhasil dihapus’);”;
    echo “”;

    ?>

  • Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in
    kak pino saya mau Tanya ni, kenapa waktu saya upload file itu berhasil, akan tetapi file tsb tidak ada pada tab download…
    pada saat mengupload juga terjadi kesalahan seperti Error GAGAL UPLOAD padahal file tsb sudah mengikuti seperti apa yang dibutuhkan misalkan
    doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf, .rar, .zip dan tidak lebih dari 1Mb kalo ga salah ukurannya hanya skitaran 1Kb/20Kb
    saya mohon pencerahannnya kak Pino

  • kang eta, ane kan udh upload file nya trus mau ane download. kok malah object not found ya?
    oia btw ini koding dowload.php ane masukin ke index/halaman depan web2an ane.

    suwun kang.

  • kang, ini di bagian upload sudah saya coba upload…
    tidak ada pemberitauan upload berhasil, dan belum masuk database…
    kira2 problemnya kenapa ya kang?

  • mas, sy nyoba yg mas buat, tp ada error di proses upload kyk gini mas:

    Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@’localhost’ (using password: YES) in C:\xampp\htdocs\jajal_updown\config.php on line 3

    Notice: Undefined index: upload in C:\xampp\htdocs\jajal_updown\upload.php on line 25

  • mas, tnya lagi y, kalo mau bikin supaya tampilan web nya ada di tengah monitor gmn y.?
    kalo dr yang mas buat tampilan ny ada diatas monitor gitu,.

  • cara mengubah ukuran file yang mau di upload gimana ya perhitungannya ?
    misal 1044070 = 1 MB
    jadi kalau mau bikin maks 10 MB = 1044070 x 10 ?

    makasih πŸ™‚

  • Mau tanya Mas Pino ini cara bikin Encrytlink Download Gimana ya misal localhost/files/namafiles.zip naha pingin jadi localhost/8S82FSA/namafiles.zip jadi ibaratnya file pathnya ke hidden hehe πŸ˜€ selain pake menu readfile() atau header karena untuk ukurna file ditas 500MB Php Buffernya lama kadang enggak ke download malah error untuk file kecil bsa di encript pake readfile sama header tapi untuk ukuran file besar saya bingfung hehe mohon bisa di bantu πŸ˜€

  • mas, saya mau tanya. Gimana ya caranya file yg terupload sudah tercatat dengan username yang telah login. nah dalam kasus ini lokasi basis datanya berbeda

  • Bagaiman Mas pino Mohon Tanggapanya untuk pertanyaan saya belum di balas hehe πŸ˜€ atau ada saran lain yang saya dapatlakukan ?
    sebelmnya saya menggunakan algoritma copy to temp tapi itu untuk localhost kalo di pindah ke server mungkin untuk 1 sampai 10 pendownload masih bisa ke handle tapi kalo sudh pulihan akan memakan banyak resource jika setiap orng download maka akan mengganrate temp folder dengan encripsi tapi sangat boros badwidth dan penggunaan hadd sangat boros

    terimakasih mohon tanggapanya

      • Terimakasih Mas Pino Ini memang susah saya pikir mudah ternyata lebih sulit dari apa yang di bayangkan hehe πŸ˜€

        oh iya mas pino ada pertanyaan lagi kalo filenya di rar misal jadi 2 part misal namanya contohfile.part1.rar dan contohfile.part2.rar nah itu .parnya hilang jadi pas di upload namanya rename ke input dana ke .rar .part1.rarnya hilang misal sesudah di upload nama filenya jadi contohnamafilebaru.rar nah jadi hilang aja .part1.rarnya

      • Terimakasih Mas Pino Ini memang susah saya pikir mudah ternyata lebih sulit dari apa yang di bayangkan hehe πŸ˜€

        oh iya mas pino ada pertanyaan lagi kalo filenya di rar misal jadi 2 part misal namanya contohfile.part1.rar dan contohfile.part2.rar nah itu .parnya hilang jadi pas di upload namanya rename ke input dana ke .rar .part1.rarnya hilang misal sesudah di upload nama filenya jadi contohnamafilebaru.rar nah jadi hilang aja .part1.rarnya

        mungkin ini potongan scriptnya bbrp diganti dan di tambah kang pino hehe πŸ˜€ mohon pencerahanya saya enggak bisa upload file ber part.

        • maaf kodenya saya hapus..
          bisa di lihat pada kode

          itu untuk mengambil ekstensi file, dan mengambilnya dengan cara mengambil kata di akhir setelah titik (.), jadi kalau nama file file.rar.part1, maka di anggap ekstensi adalah part1.
          mungkin bisa di coba dengan mengakali seperti ini

          silahkan ganti variabel lokasi seperti di atas. ini hanya untuk file yang part ya.. πŸ™‚

          • Cara Biar Otomatisnya Bagaimana ? kalo seperti itu mungkin ketika saya upload file bukan pecahan akan ada tulisan rar juga dan itu terbalik mas pino part1.rar atau part2.rar akan lebih sulit lagi soalnya nilai part enggak contanta berganti ganti part1 part2 part3 dst .. jadi gimana kita menggambil extensi dua setelah titik jadi jika extensi file .part1.rar maka (menedeteksi tlisan part) maka file extensi pake part1.rar jika tidak mendeteksi .part1.rar maka gunakan extensi .rar saja mungkin gitu tapi saya masih bingung mengimplementasikanya

            Terimakasih πŸ˜€

            • diatas sudah di ambil ekstensinya kan, mau itu part1, 2, 3 dan seterusnya. saya kira itu udah bisa…

  • OM Pino, tanya lagi dong,,

    <?php
    include('config.php');
    if($_POST['upload']){
    $allowed_ext = array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf', 'rar', 'zip');
    $file_name = $_FILES['file']['name'];
    $file_ext = strtolower(end(explode('.', $file_name)));
    $file_size = $_FILES['file']['size'];
    $file_tmp = $_FILES['file']['tmp_name'];

    $nama = $_POST['nama'];
    $tgl = date("Y-m-d");

    if(in_array($file_ext, $allowed_ext) === true){
    if($file_size < 1044070){
    $lokasi = 'files/'.$nama.'.'.$file_ext;
    move_uploaded_file($file_tmp, $lokasi);
    $in = mysql_query("INSERT INTO download VALUES(NULL, '$tgl', '$nama', '$file_ext', '$file_size', '$lokasi')");
    if($in){
    echo 'SUCCESS: File berhasil di Upload!’;
    }else{
    echo ‘ERROR: Gagal upload file!’;
    }
    }else{
    echo ‘ERROR: Besar ukuran file (file size) maksimal 1 Mb!’;
    }
    }else{
    echo ‘ERROR: Ekstensi file tidak di izinkan!’;
    }
    }
    ?>

    dari script diatas, kalo mau gedein file yang di upload hingga 10 MB, caranya gimana ya?
    atau ada cara lain nya ya..

    terimakasih

  • Kang, saya ada kendala disini
    Strict Standards: Only variables should be passed by reference in C:\xampp\htdocs\tutorial\upload.php on line 30
    padahal sudah sesuai script, mohon bantuanya kang, Terima kasih πŸ™‚

  • Mas nya pakai xampp versi berapa yah?
    Soalnya saya coba pakai xampp versi 3.0.1.2 masih muncul error seperti ini “Strict Standards: Only variables should be passed by reference in C:\xampp\htdocs\tutorial\upload.php on line 30

    terima kasih :thumbup

      • permasalahan tadi sudah selesai mas, setelah update xampp..
        namun, saya upload file yg lebih dari 1mb kok notif nya ga muncul kayak begini “Besar ukuran file (file size) maksimal 1 Mb!” malah tetep ter upload tp di page download size nya 0 kb.
        Mohon pencerahan nya mas πŸ™‚

      • if($_POST[‘upload’]){
        $allowed_ext = array(‘doc’, ‘docx’, ‘xls’, ‘xlsx’, ‘ppt’, ‘pptx’, ‘pdf’, ‘rar’, ‘zip’);
        $file_name = $_FILES[‘file’][‘name’];
        $file_ext = strtolower(end(explode(‘.’, $file_name)));
        $file_size = $_FILES[‘file’][‘size’];
        $file_tmp = $_FILES[‘file’][‘tmp_name’];

        $nama = $_POST[‘nama’];
        $tgl = date(“Y-m-d”);

        itu diletakkan dimana gan yang tadi? thanks

  • Kak mau tanya, ini kenapa yaa, muncul ERROR: Upload file gagal, tp udh msuk k folder files, namun k database blum msuk, udh saya coba pake appserv, msh kayak gt. Padahal field d database udah bnar. Mohon bantuanny πŸ™‚

  • Kak mau tanya lagi, upload n download udah sukses, nah yg dpertanyakan bagaimana carany download file dari folder yg beda, misalny d folder admin upload, dan folder files jga ad d admin, kmudian downloadny d folder guru, it gmna ya ? Mksh bnyak kk dtggu komentarnya πŸ™‚

    • mungkin bisa di tambahkan field lagi di databasenya, dengan nama akses_download atau sesukanya, trus nampilinnya data download berdasarkan field akses_download tadi.

  • gan ni pas aku jalan kan di form upload ad error gni nih, slah dmn ya ?
    Warning: mysql_connect(): Access denied for user ”@’localhost’ (using password: YES) in C:\xampp\htdocs\updown\config.php on line 3

    Notice: Undefined index: upload in C:\xampp\htdocs\updown\upload.php on line 27
    trus di form download error ny gni nih
    Warning: mysql_connect(): Access denied for user ‘root’@’localhost’ (using password: YES) in C:\xampp\htdocs\updown\config.php on line 3

    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\updown\download.php on line 37
    gmn y gan bagusinnya ?

  • thanks ilmumnya mas…kalau saya mau buatkan user gmn ya mas, yang nantinya setiap file yg diupload dan di download hanya milik user yg bersangkutan? thanks bantuannya

  • Mas mau tanya kalo kapasitas file yang saya upload lebih besar kenapa muncul notifikasi seperti ini di bagian atas halaman browser:
    “Warning: POST Content-Length of 29715153 bytes exceeds the limit of 8388608 bytes in Unknown on line 0”

    bukannya kalo file yang di upload lebih besar akan muncul notifikasi:

    “ERROR: Besar ukuran file (file size) Maksimal 1 Mb..!, ”

    mohon pencerahannya

  • Fatal error: Uncaught Error: Call to undefined function mysql_query() in /home/u670533669/public_html/upload.php:41 Stack trace: #0 {main} thrown in /home/u670533669/public_html/upload.php on line 41

    itu kenapa ya?

  • Fatal error: Call to undefined function mysql_query() in C:\xampp\htdocs\upload-download-file\upload.php on line 41
    file gk bisa insert ke database, padahal file udh masuk ke folder nya gan
    mohon bantuannya min

  • mau tanya gan, ini kemarin saya sudah coba masukkan di hosting dan berhasil tapi tiba tiba keluar error : Strict Standards: Only variables should be passed by reference in /home/bkdpbcom/public_html/expedisi/admin/upload.php on line 35 ,yang menunjuk ke : $file_ext = strtolower(end(explode(‘.’,$file_name))); , padahal sebelumnya saya gunakan lama tidak ada masalah tapi sekarang keluar error dan notif gagal upload juga muncul.

      • oke gan terimakasih, sudah ketemu errornya gan , fungsi $file_ext = strtolower(end(explode(β€˜.’,$file_name))); , ku ganti menjadi : $file_ext = pathinfo($file_name, PATHINFO_EXTENSION); sudah bisa jalan kembali gan..

  • Warning: mysql_connect(): Access denied for user ‘root’@’localhost’ (using password: YES) in C:\xampp\htdocs\upload-download-file\config.php on line 3
    –can you help me to solve this?—-

  • Gan saya udah di hosting error nya kaya begini

    “The requested URL /albar/files/lalala.rar was not found on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.”

    di script upload saya ganti direktorinya jadi /albar/files

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.