Tutorial Membuat Upload dan Download File dengan PHP dan MySQLi (Source Code)

print this page Print this page
Tutorial Membuat Upload dan Download File dengan PHP dan MySQLi-Saat ini, sudah banyak website yang mempunyai fasilitas untuk mengirimkan file dari komputer lokal/client ke komputer server atau biasa disebut upload file, lalu file tersebut bisa dengan mudah unduh oleh pengunjung, sehingga mempermudah pendistribusian file. Misalnya website sekolah yang mempunyai fasilitas e-learning atau website dealer mobil yang menyediakan free brosur untuk di download oleh calon pembeli. File yang di upload dan download formatnya bermacam-macam, ada foto, PDF ,word dan lainnya.
Karena itu, saya akan membuat tutorial upload dan download file.
Tutorialnya memang agak cukup panjang, tapi tenang saja saja karena pada akhir tulisan saya akan membagikan Source Codenya

-Upload File-

Pertama kita buat database dan tabelnya, disini saya beri nama database adalah upload dan tabelnya juga upload


Kedua buat Folder untuk menampung file-file yang di upload, misalnya folder files


Ketiga buat script untuk form uploadnya

script form upload.php
<html>
<title>Form Upload</title>
<body>
<form enctype="multipart/form-data" method="POST" action="hasil_upload.php">
File yang di upload : <input type="file" name="fupload"><br>
Deskripsi File : <br>
<textarea name="deskripsi" rows="8" cols="40"></textarea><br>
<input type=submit value=Upload>
</form>

Keempat buat Script hasil upload
script hasil_upload.php
<?php
// Baca lokasi file sementar dan nama file dari form (fupload)
$lokasi_file = $_FILES['fupload']['tmp_name'];
$nama_file   = $_FILES['fupload']['name'];
// Tentukan folder untuk menyimpan file
$folder = "files/$nama_file";
// tanggal sekarang
$tgl_upload = date("Ymd");
// Apabila file berhasil di upload
if (move_uploaded_file($lokasi_file,"$folder")){
  echo "Nama File : <b>$nama_file</b> sukses di upload";
  
  // Masukkan informasi file ke database
  $konek = mysqli_connect("localhost","root","","upload");

  $query = "INSERT INTO upload (nama_file, deskripsi, tgl_upload)
            VALUES('$nama_file', '$_POST[deskripsi]', '$tgl_upload')";
            
  mysqli_query($konek, $query);
}
else{
  echo "File gagal di upload";
}
?>

sekarang saya coba jalankan scriptnya pada localhost

Upload File dan deskripsi lalu klik upload



saat file berhasil di upload, maka tampilannya akan berubah seperti ini



untuk memastikan apakan file telah berhasil di upload, buka direktori files



-Download File-

Saya telah berhasil membuat upload file, sekarang saya akan membuat kebalikannya, yaitu download file. 
Sederhanya, aplikasi download file menyediakan link terhadap file yang akan kita download, dimana link itu di klik makan terjadilah proses download.

Pertama saya buat file berisi script untuk menampilkan files yang available untuk di download

script download.php
<html>
<title>Aplikasi Download</title>
<body>
<?php
  $konek = mysqli_connect("localhost","root","","upload");

  $query = "SELECT * FROM upload ORDER BY id_upload DESC";
  $hasil = mysqli_query($konek, $query);

  while ($r = mysqli_fetch_array($hasil)){
    echo "Nama File : <b>$r[nama_file]</b> <br>";
    echo "Deskripsi : $r[deskripsi] <br>";
    echo "<a href=\"simpan.php?file=$r[nama_file]\">Download File</a><hr><br>";
  }
?>

Kedua saya buat file berisi script untuk menyimpan file yang di download

script simpan.php
<?php
// Tentukan folder file yang boleh di download
$folder = "files/";
// Lalu cek menggunakan fungsi file_exist
if (!file_exists($folder.$_GET['file'])) {
  echo "<h1>Access forbidden!</h1>
      <p> Anda tidak diperbolehkan mendownload file ini.</p>";
  exit;
}

// Apabila mendownload file di folder files
else {
  header("Content-Type: octet/stream");
  header("Content-Disposition: attachment; 
  filename=\"".$_GET['file']."\"");
  $fp = fopen($folder.$_GET['file'], "r");
  $data = fread($fp, filesize($folder.$_GET['file']));
  fclose($fp);
  print $data;
}
?>
apabila dijalankan scriptnya maka



 Tinggal Download saja Filenya

ok, sekian tutorial singkat ini, semoga bisa berguna
Share on Google Plus

About kodekidi

KodeKidi.com Situs Tutorial Pemograman Berbahasa Indonesia
    Blogger Comment
    Facebook Comment

67 comments:

  1. Terima kasih atas source codenya, tp gimana cara kita linkkan agar file dapat di upload/download oleh setiap user tanpa di tampilkan ke user lain. sekali lagi terima kasih..!

    ReplyDelete
    Replies
    1. ok sama sama
      tergantung sistem aplikasinya bagaimana, jika aplikasi atau wesbite tersebut memiliki autentikasi user atau admin (yg punya hak akses untuk upload/download) akan lebih mudah dan simple untuk menggunakan teknik session dan If
      jadi saat user atau admin log in dan session terisi, muncul link upload/download
      atau dapat dikatakan , jika session terisi maka muncul link link upload/download , jika tidak link tidak akan muncul, sehingga user lain tidak bisa link upload/download

      Delete
  2. masih bingung gan, tolong dibantu ..
    saya ingin membuat website untuk menyimpan file namun bisa didownload oleh semua orang..

    ReplyDelete
  3. yang download.php gak bisa tampil nih kalo dijalankan..

    ReplyDelete
  4. ane mau tanya nh gan, kalo ane download pake IDM bisa gan, tp kalo download pk browser kok file yg ke download simpan.php

    ReplyDelete
  5. ane mau tanya nh gan, kalo ane download pake IDM bisa gan, tp kalo download pk browser kok file yg ke download simpan.php

    ReplyDelete
  6. pertanyaan saya sama dengan brow banu gan mohon penjelasannya

    ReplyDelete
    Replies
    1. punya saya malah normal semua kok
      mau lewat browser langsung ataupun IDM

      Delete
  7. Makasih gan, Mau tanya ni..kalo upload nya lebih dari satu file gimna ya gan scriptnya.. Trims....

    ReplyDelete
    Replies
    1. saya belum pernah mencoba
      tapi menurut saya bisa menggunakan array
      $_FILES['file']['name'][0]
      $_FILES['file']['name'][1]
      dst

      Delete
  8. di upload teh malah ada tulisan gini tolong di bantu ??

    Warning: move_uploaded_file(files/Capture 1.JPG) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\upploaad\hasil_upload.php on line 10

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\php8C43.tmp' to 'files/Capture 1.JPG' in C:\xampp\htdocs\upploaad\hasil_upload.php on line 10
    File gagal di upload

    ReplyDelete
    Replies
    1. yach itu ada kesalahan pada penempatan ditektori aja

      Delete
  9. min jelasin codingan nya
    Warning: move_uploaded_file(/img/IMG20151014090032.jpg): failed to open stream: No such file or directory in C:\xampp\htdocs\php\cek4.php on line 9

    Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\phpD6E7.tmp' to '/img/IMG20151014090032.jpg' in C:\xampp\htdocs\php\cek4.php on line 9
    file gagal di upload

    saya masih error
    makasi

    ReplyDelete
    Replies
    1. itu ada kesalah pada penempatan scriptnya kk

      Delete
  10. min, kenapa pas di hosting ada problem kaya gini ya

    Warning: mysql_query() expects parameter 1 to be string, resource given in .....
    solusinya tolong min

    makasih

    ReplyDelete
    Replies
    1. kamu ada kesalah pada bagian query
      kalo saya lihat script kamu, kamu menggunakan mysql, sedangkan script saya sendiri menggunakan mysqli

      Delete
  11. Undefined index: fupload in C:\xampp\htdocs\uploaddownload\hasil_upload.php on line 3
    fupload itu apa ya min? nama file?

    ReplyDelete
    Replies
    1. sudah adakah enctype="multipart/form-data" di form kamu???

      Delete
  12. $folder = "files/"; >>>> apa yang di maksud dengan string file memanggil langsung nama file nya dengan cara di ketik langsung atau bagaimana admin ?
    // Lalu cek menggunakan fungsi file_exist
    if (!file_exists($folder.$_GET['file']))

    ReplyDelete
    Replies
    1. files itu maksudnya direktori files
      jadi file yang akan di upload atau simpan , akan tersimpan dalam direktori files

      Delete
  13. pas saya upload ke hosting, kalo download pake IDM bisa gan, tp kalo download pk browser kok file yg ke download simpan.php. padahal sebelum dihosting (disempen di localhost), normal normal aja gan

    ReplyDelete
  14. setiap kali mau download file, error terus pesan forbiden muncul, padahal file yg diupload sudah masuk di folder files,
    kenapa ya gan...

    ReplyDelete
    Replies
    1. coba download SQL, sudah saya taruh linknya di artikel

      Delete
  15. Access forbidden!

    Anda tidak diperbolehkan mendownload file ini.

    ReplyDelete
    Replies
    1. coba download SQL, sudah saya taruh linknya di artikel

      Delete
  16. Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in...

    solusinya dong, terimakasih

    ReplyDelete
    Replies
    1. query kamu ada yang salah karena tidak konek dengn SQL
      coba download SQL, sudah saya taruh linknya di artikel

      Delete
  17. Terima kasih gan, btw kenapa kalau saya klik Download File, yang terdownload bukan file yang sudah saya upload, tetapi malah file simpan.php nya ya gan ? Mohon bantuannya, terima kasih.

    ReplyDelete
  18. gan kenapa saat di download malah simpan.php yg ke download

    ReplyDelete
    Replies
    1. coba kamu upload dgn format .rar atau .zip

      Delete
    2. walaupun dijadikan rar filenya tetap aja yang ke download simpan.php

      Delete
  19. gan kenapa saat di download malah simpan.php yg ke download

    ReplyDelete
  20. terimakasiiiiiiih sangat membantu :)

    ReplyDelete
  21. gunanya database hits int (3) apa min ?

    ReplyDelete
  22. Ga bisa Download,

    Access forbidden!

    Anda tidak diperbolehkan mendownload file ini.

    Gimana yah ?

    ReplyDelete
  23. Sudah bisa Ke download, Cuman yg ke download malah file simpan.php.
    berikut code saya :

    Tolong bantuannya pak.

    ReplyDelete
  24. ini code nya :

    http://pastebin.com/TwMp6XW8

    ReplyDelete
  25. Solved !
    Btw tolong dibenarkan itu kodingan nya salah dibagian ini :

    header("Content-Disposition: attachment; filename=".$_GET['file']."");

    Itu sudah saya benarkan bagi yang di download File simpan.php nya.
    terimakasih.

    ReplyDelete
    Replies
    1. gan mau tnya dong, saya udh bisa smpe tahap upload. nah utk menuju proses download nya ada coding yg ditambahkan kah? soalnya link downloadnya gak mncul

      Delete
  26. kok datanya g tampil di database gan? solusinya gimana,

    ReplyDelete
    Replies
    1. sorry my bad
      sudah saya perbaiki dan sudah muncul datanya di database, silahkan bisa download script dan SQL lagi
      terima kasih koreksinya

      Delete
  27. gan, kalo dilocalhost file bisa disownload, tapi pas sudah hosting malah file simpan.php yang ke download kenapa ya

    ReplyDelete
  28. kok hasil uploadku kaya gini ya kak ? mohon bantuannya...


    $nama_file sukses di upload"; // Masukkan informasi file ke database $konek = mysqli_connect("localhost","root","","upload"); $query = "INSERT INTO upload (nama_file, deskripsi, tgl_upload) VALUES('$nama_file', '$_POST[deskripsi]', '$tgl_upload')"; mysqli_query($konek, $query); } else{ echo "File gagal di upload"; } ?>

    ReplyDelete
  29. mhon bantuanya kk , knapa setiap download file tetapi yang diunduh kog simpan.php ya .tolong bantu kasih penjelasan . Terima kasih

    ReplyDelete
    Replies
    1. coba di ganti header("Content-Disposition: attachment; filename=".$_GET['file']."");

      Delete
  30. This comment has been removed by the author.

    ReplyDelete
  31. gan, kalo file yg diupload berupa gambar *.jpg, *.png, dll. bisa di download gak?

    ReplyDelete
  32. Script php untuk menampilkan jumlah file yang terdownload apa ya....?Misal kita mengupload file mtk terus didownload sebanyak 6 kali maka akan tampil file tersebut "terdownload 6 kali"
    Makasih gan

    ReplyDelete
  33. link download nya kok tidak bisa bos

    ReplyDelete
  34. Access forbidden!
    Anda tidak diperbolehkan mendownload file ini.

    Jika pesan allert nya seperti ini knpa ya?

    ReplyDelete
  35. saat download malah yang didownload simpan.php gan, kenapa ya?

    ReplyDelete
    Replies
    1. bisa ditambahkan ini dibagian download.php line ke 15-16 direplace dengan ini

      header("Content-Disposition: attachment; filename=".$_GET['file']."");

      silahkan dicoba, jangan lupa mampir soerjaweb.com

      Delete
  36. file kami simpan di folder public_html/download , nama file [ 12345.rar ],
    download berhasil, size sesuai , hanya nama file yg ke download berubah menjadi [ download ] , ketika saya cek dari properties datanya:

    Type of file : file
    Description : download

    ini gimana gan ?

    ReplyDelete
  37. Saat ingin mendownload file yang sudah diupload kenapa file donlot.php nya yang terdownload ? ini terjadi ketika script diupload ke internet, dan pada saat masih di localhost script berjalan dengan lancar gan

    ReplyDelete
  38. edit file yang sudah terupload bagaimana gan?

    ReplyDelete
  39. Notice: Undefined index: fupload in C:\xampp\htdocs\Desa\hasil_upload.php on line 3

    Notice: Undefined index: fupload in C:\xampp\htdocs\Desa\hasil_upload.php on line 4



    Saya kesalahan seperti diatas gan ???
    Mohon bantuannya

    ReplyDelete
  40. min mau tanya, utk upload sudah bisa msk ke database. Tp pas download ga bisa, ga bisa nya adalah ketika klik link downloadnya yg ter download/ unduh bukan file yg kita upload td, melainkan malah file .php gtu

    terimaksih

    ReplyDelete
  41. Ini script saya gan... Ga keluar apa2....


    ReplyDelete
  42. hai min, mau bertanya dong, kenapa ketika kita mau download filenya tidak bisa di tampilkan ya?

    ReplyDelete