Skip to content
Follow us on Twitter or subscribe to this
website by email or with the RSS feed

Upload File Dengan PHP Dan MySQL, Bag. 2

Sebenarnya ada banyak metode yang bisa kita pakai untuk menyimpan file — khususnya gambar — di web server. Bisa dengan menyimpan langsung dalam bentuk file atau bisa juga disimpan semuanya di dalam database.

Pada artikel ini kita hanya akan membahas cara kedua, yaitu bagaimana menyimpan file gambar dalam database. Itu sebabnya dalam design tabel di artikel pertama, ada field filedata dengan tipe LONGBLOB.

Ada 4 file yang akan kita buat yaitu:

  • koneksi.php: untuk melakukan koneksi database MySQL
  • index.php: untuk menampilkan daftar file yang telah kita upload
  • upload.php: untuk mengupload file ke server
  • download.php: untuk mendownload file dari server

Koneksi Database

File koneksi.php ini nantinya akan kita include di ketiga file berikutnya, yaitu index.php, upload.php dan download.php.

Nama File: koneksi.php

<?php
$error_message = "";

if (! @mysql_connect("localhost", "root", ""))
{
   $error_message = "Koneksi database gagal!";
}

@mysql_select_db("foto");
?>

Upload File

Proses upload file pada prinsipnya hanya mengkopi file di komputer lokal dan ditransfer ke server. Ukuran file yang bisa diupload ke server biasanya ada batas maksimalnya. Oleh karena itu kita juga perlu memperhitungkan hal ini.

Berikut ini contoh source program untuk upload file.

Nama File: upload.php

<?php
include ("koneksi.php");

if ($_POST)
{
   $filedata = addslashes(fread(fopen($_FILES['imagefile']['tmp_name'], 'r'),
               $_FILES['imagefile']['size']));
   $filetype = $_FILES['imagefile']['type'];
   $filesize = $_FILES['imagefile']['size'];
   $filename = $_FILES['imagefile']['name'];
   $deskripsi = $_POST['deskripsi'];

   $result = mysql_query ("insert into upload (deskripsi,
             filetype, filedata, filename, filesize)
             values ('" . $deskripsi . "','" . $filetype .
             "','" . $filedata . "','" . $filename .
             "'," . $filesize . ")");

   if ($result) echo "Upload sukses";
}
?>

<html>
<head>
   <title>Form Upload File</title>
</head>
<body>
<form enctype="multipart/form-data" method="post">
<table border="1">
   <tr>
      <td>File</td>
      <td><input type="file" name="imagefile"></td>
   </tr>
   <tr>
      <td>Deskripsi</td>
      <td><input type="text" name="deskripsi"></td>
   </tr>
   <tr>
      <td>&nbsp;</td>
      <td><input type="submit" value="Upload"></td>
   </tr>
</table>
</form>
</body>
</html>

Download File

Kebalikan dari upload adalah download file. Pada proses ini kita harus mengkonversi data biner yang tadinya tersimpan di database menjadi file seperti semula.

Berikut ini contoh source program untuk download file.

Nama File: index.php

<?php
include ("koneksi.php");

$data = @mysql_query ("select * from upload");
?>

<html>
<head>
   <title>Daftar Foto</title>
</head>

<body>
<table border="1">
   <tr>
      <th>ID</th>
      <th>Nama file</th>
      <th>Tipe</th>
      <th>Ukuran</th>
      <th>Deskripsi</th>
      <th>Download</th>
   </tr>
   <?php while ($row = @mysql_fetch_assoc($data)) { ?>
   <tr>
      <td><?=$row['id'] ?></td>
      <td><?=$row['filename'] ?></td>
      <td><?=$row['filetype'] ?></td>
      <td><?=$row['filesize'] ?></td>
      <td><?=$row['deskripsi'] ?></td>
      <td><a href="download.php?id=<?=$row['id'] ?>">Download</a></td>
   </tr>
   <?php } ?>
</table>
</body>
</html>

Nama File: download.php

<?php
include ("koneksi.php");

$data = @mysql_query ("select * from upload where
        id=" . $_REQUEST['id']);

if ($row = @mysql_fetch_assoc($data))
{
   $filedata = $row['filedata'];
   $deskripsi = $row['deskripsi'];
   $filename = $row['filename'];
   $filetype = $row['filetype'];
   $filesize = $row['filesize'];
}

header('Content-type: ' . $filetype);
header('Content-length: ' . $filesize);
header("Content-Transfer-Encoding: binarynn");
header("Pragma: no-cache");
header("Expires: 0");
header('Content-Disposition: attachment; filename="' . $filename . '"');
echo $filedata;
exit();
?>

(bersambung ke bagian 3)

Post to Twitter Tweet This Post to Delicious Delicious Post to Digg Digg This Post to Facebook Facebook Post to MySpace MySpace Post to StumbleUpon Stumble This

Artikel Terkait:

POST BANNER

Bagaimana Komentar Anda?

Monggo kalau Anda mau mengomentari tulisan di atas! Bertanya atau mengkritik juga boleh, tapi jangan terlalu menyakitkan :).

  • ace | September 9th, 2008 jam 2:43 pm

    bermanfaat nih tak coba dolo ya tar klo ada yg eror aku tanya

  • skotlet | September 29th, 2008 jam 3:38 pm

    gmn kalo filenya bukan gambar??

    dan file tersbut tersimpan di folder
    bukan di DB

    Wahyu:
    Prinsipnya sama, nanti lain kali saya bahas disini.

  • mozink | November 19th, 2008 jam 11:03 am

    thanks.. :)

  • miftah | December 3rd, 2008 jam 11:57 am

    wah kebetulan aqu lagi cari tutorial upload gambar buat laporan kerja praktekq. thank banget bwt tutorialnya, ntar qu coba moga bisa….

  • arif | January 14th, 2009 jam 1:26 pm

    aku lagi buat KP, Tak coba dulu yaaaaa Makasih

  • idegustta | January 19th, 2009 jam 8:57 am

    MAKASI BANYAK BROW… AKU DAH BAJAK PUNYAMU.

  • ndo | February 9th, 2009 jam 6:31 pm

    thanks infonya…

    mas mo tanya juga ini saya udah praktek dan berhasil (dengan sedikit modify) tapi kok maks filnya sekitar 500KBytes yah?
    padahal aku mo upload nyampe 5Mbytes

    tolong bantuanya…..

  • yusuf | February 10th, 2009 jam 9:13 am

    Matur Nuwun ilmunya

  • firma | March 12th, 2009 jam 6:42 pm

    kok error di upload.php…………….
    Parse error: syntax error, unexpected ‘”‘ in C:\xampp\htdocs\upload\upload.php on line 17

    Wahyu Wibowo:
    Sorry, ada yang keliru.

  • Awan | April 1st, 2009 jam 3:18 pm

    Kok upload.php -nya gak masuk ke database ya. Mohon konfirmasinya dunks. Thx

    ***Sudah saya betulkan. Sekarang insya Allah sudah masuk.

  • Yudo | April 4th, 2009 jam 10:20 am

    Thanks ya atas contoh scriptnya. Gw pngn tnya,bgmna crnya untuk melakukan edit form secara online”sprti Bloger”

  • ryan | May 6th, 2009 jam 1:54 pm

    mkacih scripnya…..berkat scriptnya aq bs nyelesain tugas school,mau tanya donk untuk upload
    koneksi yg lebih muda ada gk.

  • Masykuri | November 1st, 2009 jam 8:55 am

    ini artikel yang saya cari Terima kasih sobat,,, atas bagi-bagi ilmunya. untuk yang butuh logo berbentuk vektor saya siap berbagi Trims

  • Masykuri | November 1st, 2009 jam 8:57 am

    coment lagi,,, tadi salah masukkan alamat website

Tinggalkan Pesan