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> </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)


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