Dengan menggunakan function php yaitu base64_encode() dan base64_decode, kita bisa memasukkan file binary ke dalam tabel di database mysql. Hal ini berbeda dengan upload file ke web server langsung, dimana yang dimasukkan ke tabel hanya link file bukan isi filenya.
Sekali lagi saya tegaskan, trik ini untuk menyimpan file binary ke dalam tabel Mysql bukan link atau namafile nya.
Untuk bisa mengerti trick ini dengan dalam anda harus menguasai
-php
-html (khususnya bagian pengiriman form -upload file)
-mysql
Perhatian =
* langkah2 di bawah tidak harus dikerjakan sedetil mungkin anda harus merubah parameter2 seperti koneksi mysql, nama file yang dikirim, dll.
* Maksimum file yang dikirim adalah sebesar max_allowed_packet dalam ukuran byte (bisa dilihat dengan mengetikkan 'mysql -help' diconsole)
Di kasus ini kita akan membuat 3 file dan 1 database :
form.htm --> untuk bikin form pengiriman file
kirim.php --> untuk menyimpan file ke dalam database MySQL
ambil.php --> untuk download file dari database MySQL
contoh_db --> database MySQL, didalamnya terdapat table 'berkas'
1. bikin file html dengan nama "form.htm" dan isi dengan script berikut :
Code: [Select]
<html>
<head>
<title>Kirim Data</title>
</head>
<body>
<form enctype='multipart/form-data' method='post' action='kirim.php'>
<pre>
Input Data : <input type='file' name='file'>
<input type='submit' value='Kirim'>
</pre>
</form>
</body>
</html>
2. save file tersebut di dalam folder web server kesayangan anda.
3. Masuk ke MySQL lalu buat database 'contoh_db' :
Code: [Select]
create database contoh_db;
4. Masuk ke dalam db tsb dengan mengetikkan :
Code: [Select]
use contoh_db;
5. buat tabel 'berkas' dengan mengetikkan :
Code: [Select]
create table berkas
(
namafile varchar(45),
isifile blob
);
6. Bikin file bernama 'kirim.php', isi dengan script di bawah lalu simpan di
folder yang sama.
Code: [Select]
<?php
$host = "localhost"; //isi dengan host mysql anda
$user = "root"; //isi dengan user mysql anda
$code = "*********"; //isi dengan code mysql anda
mysql_connect($host,$user,$code);
mysql_select_db("contoh_db");
$namafile = $_FILES["file"]["name"];
$tmpnmfile = $_FILES["file"]["tmp_name"];
$isifile = $_FILES["file"]["content"];
$ukuranfile = $_FILES["file"]["size"];
$file = fopen($tmpnmfile,"rb");
$isifile2 = base64_encode(fread($file,$ukuranfile));
if(mysql_query("insert into berkas values ('{$namafile}','$isifile2')"))
{echo "Pengiriman file berhasil";} else {echo "pengiriman file gagal";}
?>
7. Bikin file bernama 'ambil.php', isi dengan script di bawah lalu simpan di
folder yang sama.
Code: [Select]
<?php
$namafile = ""; //isi dengan nama file yang anda kirim;
$host = "localhost"; //isi dengan host mysql anda
$user = "root"; //isi dengan user mysql anda
$code = "*********"; //isi dengan code mysql anda
mysql_connect($host,$user,$code);
mysql_select_db("contoh_db");
header("Content-Type:application/octet-stream");
header("Content-Disposition:attachment; filename=\"$namafile\"\n");
$query = mysql_query("select isifile from berkas where namafile='{$namafile}'");
$fetch = mysql_fetch_array($query);
echo base64_decode($fetch["isifile"]);
?>
8. Buka browser lalu masuk ke dalam page form.htm
9. Pilih file yang anda inginkan, mis: emprotz.zip (untuk percobaan, pilih file berukuran 5 Kb atau kurang)
10. Klik tombol Kirim
11. Setelah muncul "Pengiriman File Berhasil", masuklah ke halaman 'ambil.php'. Ingat nama file pada konfigurasi ambil.php harus sama dengan file yang dikirim
12. Download file dimulai.