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
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
1 2 3 4 5 6 7 8 9 10 |
DROP TABLE IF EXISTS `download`; CREATE TABLE `download` ( `id` int(11) NOT NULL auto_increment, `tanggal_upload` date NOT NULL, `nama_file` varchar(100) NOT NULL, `tipe_file` varchar(10) NOT NULL, `ukuran_file` varchar(20) NOT NULL, `file` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php //koneksi ke database mysql_connect("localhost", "root", "root"); mysql_select_db("tutorial"); //fungsi untuk mengkonversi size file function formatBytes($bytes, $precision = 2) { $units = array('B', 'KB', 'MB', 'GB', 'TB'); $bytes = max($bytes, 0); $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); $pow = min($pow, count($units) - 1); $bytes /= pow(1024, $pow); return round($bytes, $precision) . ' ' . $units[$pow]; } ?> |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<!DOCTYPE html> <html> <head> <title>Simple Upload dan Download File</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="container"> <div id="header"> <h1>Simple Upload dan Download File</h1> <span>Dibuat oleh Pino @tutorialweb.net</span> </div> <div id="menu"> <a href="index.php" class="active">Home</a> <a href="upload.php">Upload</a> <a href="download.php">Download</a> </div> <div id="content"> <h2>Home</h2> <p>Selamat Datang!</p> <p>Web Simple Download dan Upload File ini dibuat oleh <strong>TUTORIALWEB.NET</strong>. Anda bisa mempublikasikan ulang, atau merubah Source Code web ini. Jangan lupa untuk mengunjungi <a href="http://www.tutorialweb.net/" target="_blank">TUTORIALWEB.NET</a> untuk tutorial-tutorial pemrograman lainnya.</p> </div> </div> </body> </html> |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
<!DOCTYPE html> <html> <head> <title>Simple Upload dan Download File</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="container"> <div id="header"> <h1>Simple Upload dan Download File</h1> <span>Dibuat oleh Pino @tutorialweb.net</span> </div> <div id="menu"> <a href="index.php">Home</a> <a href="upload.php" class="active">Upload</a> <a href="download.php">Download</a> </div> <div id="content"> <h2>Upload</h2> <p>Upload file Anda dengan melengkapi form di bawah ini. File yang bisa di Upload hanya file dengan ekstensi <b>.doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf, .rar, .zip</b> dan besar file (file size) maksimal hanya 1 MB.</p> <?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 '<div class="ok">SUCCESS: File berhasil di Upload!</div>'; }else{ echo '<div class="error">ERROR: Gagal upload file!</div>'; } }else{ echo '<div class="error">ERROR: Besar ukuran file (file size) maksimal 1 Mb!</div>'; } }else{ echo '<div class="error">ERROR: Ekstensi file tidak di izinkan!</div>'; } } ?> <p> <form action="" method="post" enctype="multipart/form-data"> <table width="100%" align="center" border="0" bgcolor="#eee" cellpadding="2" cellspacing="0"> <tr> <td width="40%" align="right"><b>Nama File</b></td><td><b>:</b></td><td><input type="text" name="nama" size="40" required /></td> </tr> <tr> <td width="40%" align="right"><b>Pilih File</b></td><td><b>:</b></td><td><input type="file" name="file" required /></td> </tr> <tr> <td> </td><td> </td><td><input type="submit" name="upload" value="Upload" /></td> </tr> </table> </form> </p> </div> </div> </body> </html> |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<!DOCTYPE html> <html> <head> <title>Simple Upload dan Download File</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="container"> <div id="header"> <h1>Simple Upload dan Download File</h1> <span>Dibuat oleh Pino @tutorialweb.net</span> </div> <div id="menu"> <a href="index.php">Home</a> <a href="upload.php">Upload</a> <a href="download.php" class="active">Download</a> </div> <div id="content"> <h2>Download</h2> <p>Silahkan download file yang sudah di Upload di website ini. Untuk men-Download Anda bisa mengklik Judul file yang di inginkan.</p> <p> <table class="table" width="100%" cellpadding="3" cellspacing="0"> <tr> <th width="30">No.</th> <th width="80">Tgl. Upload</th> <th>Nama File</th> <th width="70">Tipe</th> <th width="70">Ukuran</th> </tr> <?php include('config.php'); $sql = mysql_query("SELECT * FROM download ORDER BY id DESC"); if(mysql_num_rows($sql) > 0){ $no = 1; while($data = mysql_fetch_assoc($sql)){ echo ' <tr bgcolor="#fff"> <td align="center">'.$no.'</td> <td align="center">'.$data['tanggal_upload'].'</td> <td><a href="'.$data['file'].'">'.$data['nama_file'].'</a></td> <td align="center">'.$data['tipe_file'].'</td> <td align="center">'.formatBytes($data['ukuran_file']).'</td> </tr> '; $no++; } }else{ echo ' <tr bgcolor="#fff"> <td align="center" colspan="4" align="center">Tidak ada data!</td> </tr> '; } ?> </table> </p> </div> </div> </body> </html> |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
@charset "utf-8"; /* CSS Document */ body { font-family:Tahoma, Geneva, sans-serif; font-size:12px; background-color:#eee; margin:0; padding:0; } h1, h2, h3 { margin:0; padding:0; } #container { width:500px; margin:20px auto; padding:10px; background-color:#fff; box-shadow:0px 0px 3px #000; } #header { text-align:center; } #menu { text-align:center; margin:15px 0px; border-top:1px solid #CCC; border-bottom:1px solid #CCC; } #menu a { display:inline-block; padding:5px 10px; text-decoration:none; color:#000; font-weight:bold; } #menu a:hover { background-color:#CCC; } #menu a.active { background-color:#CCC; } .table, th, td { border-collapse:collapse; border:1px solid #ccc; } .table th { background-color:#CCC; } .error { border:1px solid #FF8080; background-color:#FFCECE; padding:3px; margin:5px 0px; text-align:center; } .ok { border:1px solid #80FF80; background-color:#CFC; padding:3px; margin:5px 0px; text-align:center; } |
Nah, sudah selesai. Jangan lupa za untuk Rate, Like dan Share artikel ini. Kalau mau download file yang sudah jadi bisa di bawah ini.
Password:
Ah gimana sih gan admin masih error nih : Download
Silahkan download file yang sudah di Upload di website ini. Untuk men-Download Anda bisa mengklik Judul file yang di inginkan.
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@’localhost’ (using password: YES) in C:\xampp\htdocs\PhpProject1\upload-download-file\upload-download-file\config.php on line 3
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\PhpProject1\upload-download-file\upload-download-file\download.php on line 37
tuh gimana caranya supaya bs aktive donwloadnya hadeh.
koneksi ke database tidak sesui dengan server sobat. sesuaikan dulu.
iya mas pino..sy juga kendala sperti itu..tlg panduannya
cek koneksi ke database nya.
caranya gimana
coba cek file config.php ada di mana? sepertinya inclide lokasi salah
Aku coba upload file .pdf 5mb, Alhasil file ke upload tapi sizenya jadi 0 B, seharusnya ada peringatan upload maks 1 mb.
Sekedar informasi bug.
Nice tutorial mas 🙂
terima kasih, untuk tutorial sudah update terbaru http://tutorialweb.net/website-upload-dan-download-update/
Kalau semisalkan backup database dan folder files yg di dalam projectnya itu gimana gan? Apa degan cara export/dump mysql saja atau drngan cara manual? Semua folder dalam project dan databasenya diexport? Atau ada cara yg lebih canggih lagi?
http://f0x35cloud.000webhostapp.com/download.php
mass tolong di cek ini kenapa ya 🙁
ada penutup if yang kurang atau lebih
Notice: Undefined index: upload in C:\xampp\htdocs\upload-download-file\upload.php on line 27
Kenapa ya?
beri @ didepan variabel nya
gimana maksud ny memberi tanda @ didepan variabel nya? variabel yg mana gan? mungkin bisa diberi contohnya.. thanks.. harap maklum, newbie bertanya 🙂
setiap apa $ beri @, mejadi @$…
mas kalau ini kenapa mas
fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\sam_alf\config.php:3 Stack trace: #0 C:\xampp\htdocs\sam_alf\upload.php(26): include() #1 {main} thrown in C:\xampp\htdocs\sam_alf\config.php on line 3
fungsi mysql_connect() sudah tidak support lagi,
minta bantyuanya mas fatoni kalau begini kenapa mas
Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp\htdocs\sam_alf\download.php on line 36
apakah koneksi ke database juga sudah dirubah ke mysqli?
mas kalo upload gagal terus tapi file berhasil pindah direktori itu salah apanya ya
coba cek koneksi ke database nya.
kalau mau nambahin fitur delete file yang ada di download gimana min?
Tambahkan kolom di table list file, dengan link delete yang ambil id.
selamat malam pak saya suka dengan artikel bapak, tp ada yang ingin saya tayakna kenapa klw saya ganti db nya ga mau y,harus dengan db dari bapak bahkan klw saya buat db dengan fill yang sama juga tidak jalan
tolong pencerahnya pak terimaksih
nama kolom, tipe, dan jumlah apakah sudah sama?
pastikan juga koneksi sudah benar
tanya dong,
saya tidak bisa upload file dengan ext (.midi),
saya sudah ubah file yang diperbolehkan dalam skrip upload.php (size file juga sudah disesuaikan).
Mohon bantuannya, apa penulisan file ext saya salah?
muncul pesan error?
mas, mau tanya
kenapa muncul notice “Notice: Undefined index: upload in C:\xampp\htdocs\udfile\upload.php on line 27
beri @ di awal variabel
mas kalau ini knp yah
Strict Standards: Only variables should be passed by reference in F:\xampp\htdocs\upload-download-file\upload.php on line 30
Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in F:\xampp\htdocs\upload-download-file\upload.php on line 41
ini script lama gan, jadi fungsi mysql sudah tidak bisa.
gan ini kenapa ya error saat upload file 26.mb
Warning: POST Content-Length of 26854772 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
fungsi mysql nya udah ane ubah ke mysqli, kalo upload file kecil bisa, tapi kalo upload file besar ngga bisa
ini karena upload di batasi hanya 2MB oleh server nya.
silahkan di ganti dengan ubah file php.ini, dan cari max uploaded size = ganti besaran yg di inginkan
pas upload file kok gagal ya? udah coba semua ekstensi tetep gagal upload. infonya mas?
coba upload dengan ukuran file kurang dari 1mb
Nanti file yg berhasil di upload, tersimpan folder mana min?
maaf mas mau tanya, upload sukses, tapi download kok ga bisa yaa ?
gk bisa nya gmn?
saya kok pas download hsilnya malah kyak gini min..??
Object not found!
The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.
If you think this is a server error, please contact the webmaster.
Error 404
localhost
Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
download lewat mirror
keren !! terima kasih tutornya
Notice: Undefined index: upload in C:\xampp\htdocs\download\upload.php on line 27
berikan ini pada baris paling atas
mohon pencerahannya mas
move_uploaded_file(): Unable to move ‘C:\xampp\tmp\phpFA40.tmp’ to ‘files/anjay.pdf’ in C:\xampp\htdocs\tutorial\upload.php on line 40
pastikan ada folder files.
Bang misi mau tanya biar bisa upload lebih dari 2mb gimana? saya sudah mengganti mas_size_upload jadi 40M, tp ttp tidak bisa upload lbh dr 2mb. apache nya jg sudah saya restart setelah mengganti max_size_upload. tolong pencerahannya.
Itu di file mana yah gan yg diganti? Di php.ini atau di file .php aplikasi uploadnya? Terimakasih
sudah saya ganti mas di php.ini nya dengan size sama seperti itu 40M tp tetap tidak ada perubahan mas
keterangan error gimana?
php.ini
ini gimana ya gan
Warning: include(config.php): failed to open stream: No such file or directory in F:\xampp\htdocs\tes\upload-download-file\upload.php on line 26
Warning: include(): Failed opening ‘config.php’ for inclusion (include_path=’F:\xampp\php\PEAR’) in F:\xampp\htdocs\tes\upload-download-file\upload.php on line 26
Notice: Undefined index: upload in F:\xampp\htdocs\tes\upload-download-file\upload.php on line 27
coba cek file config.php ada di mana? sepertinya inclide lokasi salah
Warning: include(config.php): failed to open stream: No such file or directory in F:\xampp\htdocs\tes\upload-download-file\download.php on line 35
di menu donload kok ada menu ini ya bang
Warning: include(): Failed opening ‘config.php’ for inclusion (include_path=’F:\xampp\php\PEAR’) in F:\xampp\htdocs\tes\upload-download-file\download.php on line 35
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in F:\xampp\htdocs\tes\upload-download-file\download.php on line 37
Mohon bantuannya admin saya ada kendala di upload dan download
UPLOAD
Warning: move_uploaded_file(files/tes.docx): failed to open stream: No such file or directory in C:\xampp\htdocs\belajardownload\upload.php on line 40
Warning: move_uploaded_file(): Unable to move ‘C:\xampp\tmp\php9E59.tmp’ to ‘files/tes.docx’ in C:\xampp\htdocs\belajardownload\upload.php on line 40
Download
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\belajardownload\download.php on line 37
pastikan ada folder files.
bang gimana cara nambah tombol hapus di setiap file yang di upload?
pada file download.php tambahkan link hapus nya. query nya delete
gan mau tanya knpa pas di file upload pas if($in) { echo ‘succes’; }else {echo’gagal’;} file nya masuk tp statusnya gagal gmna ya penjelasanya
jalankan pakai localhost, menggunakan server xampp
Sedikit Sentuhan di koneksi, tambahkan mysqli_query dan masukkan variabel $con, Lancar Djaya
Gan mau tanya, kalau upload lebih dari satu file (dengan menambahkan choose file+upload file dibawahnya) itu agar semua file bisa terupload bagaimana caranya ya Gan? Ane coba upload lebih dari satu, gagal Gan. Yang sukses upload hanya yang paling bawah.
upload multiple. proses pakai perulangan.
Terimakasih mas fatoni sudah membalas comment saya 🙂
Untuk proses perulangan, source codenya seperti ini bukan ya mas fatoni?
if (!empty($_FILES[“myFile”])) {
//pengecekan multiple upload
$jumlahFile = count($_FILES[“myFile”]);
for($i=0; $i<$jumlahFile; $i++){
$myFile = $_FILES["myFile"];
$ext = pathinfo($_FILES["myFile"]["name"], PATHINFO_EXTENSION);
$size = $_FILES["myFile"]["size"];
$tgl = date("Y-m-d");
$paket_pekerjaan = $_REQUEST["paket_pekerjaan"];
$scoop_pekerjaan = $_REQUEST["scoop_pekerjaan"];
$prosedur_kerja = $_REQUEST["prosedur_kerja"];
Apabila ada yang keliru, mohon di koreksi.
Thank you so much for your attention 🙂
Keren…Terimakasih gan
Desain blognya keren gan
Tutorial nya juga oke
Bagi yang error mungkin versi phpnya terlalu tinggi
gan, saya berhasil upload. namun pas manggil download php. ada error ini
Fatal error: Call to undefined function formatBytes() in
fungsinya sepertinya gk jalan itu.
pastikan sudah ada funginya di script nya
Mas, di halaman upload kok ada error seperti ini ya
Notice: Undefined index: upload in C:\xampp\htdocs\updl2\upload.php on line 26
beri @ di awal index
[11-Nov-2019 07:49:48 UTC] PHP Warning: mysqli_query() expects at least 2 parameters, 1 given in /home/rendyjun/public_html/upload.php on line 41
sudah konek ke database?
min, tolongin dong kok pas upload error muncul ERROR: Gagal upload file! , padahal di folder files nambah isinya dan ada error juga spt ini:
Warning: mysql_connect(): Access denied for user ‘root’@’localhost’ (using password: YES) in C:\xampp_old\htdocs\upload-download-file\config.php on line 3
Notice: Undefined index: upload in C:\xampp_old\htdocs\upload-download-file\upload.php on line 27
tetapi ketika klik upload error yang
Notice: Undefined index: upload in C:\xampp_old\htdocs\upload-download-file\upload.php on line 27
itu hilang, ganti jadi pesan error gagal upload tadi, saya pakai phpmyadmin versi 5
database sudah dibuat mengikuti tutorial diatas dgn nama “tutorial” lalu sintaks sqlnya copy paste dari file database.sql
silahkan lihat tutorial terbaru. ini versi lama yg masih menggunakan mysql.
maaf gan saya saat coba login kok masi error
Notice: Undefined variable: conn in C:\xampp\htdocs\up_do\login.php on line 67
Fatal error: Uncaught Error: Call to a member function real_escape_string() on null in C:\xampp\htdocs\up_do\login.php:67 Stack trace: #0 {main} thrown in C:\xampp\htdocs\up_do\login.php on line 67
mohon pencerahanya
pakai php 5, ubah servernya ke php5