PHP insert/update/view file BLOB di MySQL

This item was filled under [ Code Snippet, MySQL, PHP ]

Cara untuk insert/update/view (menyimpan/mengubah/menampilkan) file biner pada MySQL adalah sebagai berikut.

Struktur database MySQL contoh nya kita beri nama tabel “file_attachment”, sebagai berikut:
Copy paste pada tools MySQL Administrasi Anda, seperti phpmyadmin.

CREATE TABLE IF NOT EXISTS `file_attachment` (
  `id` bigint(20) NOT NULL auto_increment,
  `file_content` mediumblob NOT NULL,
  `file_name` varchar(255) NOT NULL,
  `file_type` varchar(255) NOT NULL,
  `file_size` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Untuk Insert Script nya adalah sbb.:
Beri nama file insert_blob.php (hanya contoh).

<?php
// CONECT DATABASE
@mysql_connect("localhost", "root", "") OR die ("NOT CONNECT DATABASE");
@mysql_select_db("nama_database") OR die ("CONNECTED, BUT NO DATABASE");
 
if($_POST[submit]){
    $file_name = $_FILES['file']['name'];
    $tmp_name  = $_FILES['file']['tmp_name'];
    $file_size = $_FILES['file']['size'];
    $file_type = $_FILES['file']['type'];
    $fp = fopen($tmp_name, 'r');
    $file_content = fread($fp, $file_size) or die("Error: cannot read file");
    $file_content = mysql_real_escape_string($file_content) or die("Error: cannot read file");
    fclose($fp);
 
 
    // INSERT
    $qu = "INSERT INTO `file_attachment`
                (`file_content`,`file_name`,`file_type`,`file_size`)
                VALUES
                ('".$content."','".$file_name."','".$file_type."','".$file_size."')";
	$re = mysql_query($qu) or die ("Sorry Cant insert db!");
	echo $file_name." inserted succesfully to database";
}
echo '<form method="post" enctype="multipart/form-data">';
echo '	<input name="file" type="file">';
echo '	<input name="submit" type="submit" value="Upload">';
echo '</form>';
?>

Untuk menampilkan File dari BLOB, menggunakan 2 file, file pertama adalah sebagai berikut:
Beri nama file view_blob.php (hanya contoh).

<?php
// CONECT DATABASE
@mysql_connect("localhost", "root", "") OR die ("NOT CONNECT DATABASE");
@mysql_select_db("nama_database") OR die ("CONNECTED, BUT NO DATABASE");
 
$id = $_REQUEST['id'];
$query = "SELECT * FROM `file_attachment` WHERE `id`='".$id."' LIMIT 1";
$qu = mysql_query($query);
$num = mysql_numrows($qu);
if($num > 0) {
	$result=mysql_fetch_object($qu);
	header("Content-Disposition: attachment; filename=".jin_gfile($result->file_name.""));
	header("Content-length: ".$result->file_size."");
	header("Content-type: ".$result->file_type."");
	echo $result->file_content;
} else {
	echo "File tidak valid!";
}
?>

berikut tambahan fungsi jin_gfile, supaya nama file tidak ada karakter aneh (boleh disatukan dalam file view_blob.php).

<?php
// CLEAN FILENAME
function jin_gfile($txt) {
	$txt = preg_replace("/[^a-zA-Z0-9s.]/", "_", trim($txt));
	return $txt;
}
?>

Berikutnya file kedua untuk view, adalah sbb bergantung kebutuhan:
- Untuk File Download (file umum), kita asumsikan pada data di MySQL sudah ada id 9 yang isinya adalah file document laporan ber ekstensi .doc atau .xls

<a href="http://namadomain/view_blob.php?id=9">File Laporan Bulan Maret 2010 (klik untuk download)</a>

- Untuk menampilkan gambar, kita asumsikan pada data di MySQL sudah ada id 3 yang isinya adalah file gambar ber ekstensi .jpg, .gif atau .png

<img src="http://namadomain/view_blob.php?id=3" alt="Gambar Alumni 1996">

Catatan PENTING: jika memungkinkan disarankan untuk tidak memilih menyimpan file biner kedalam struktur storage tabel database MySQL, melainkan lebih baik menyimpan file system.

Rate this topic:
1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5.00 out of 5)
Loading ... Loading ...
Popularity: 8,660 views
Tagged with: [ , , , ]
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Artikel Sejenis

9 Comments on “PHP insert/update/view file BLOB di MySQL”

  • renita
    Google Chrome Google Chrome 5.0.375.126
    Windows Windows 7
    19 Aug 2010 11:11

    kenapa yak FILE TIDAK VALID MULU…
    trus yang File Laporan Bulan Maret 2010 (klik untuk download) sama yang ini ditulis dimana??

    Like or Dislike: Thumb up 0 Thumb down 0
  • Google Chrome Google Chrome 6.0.472.53
    Ubuntu Linux Ubuntu Linux
    29 Sep 2010 23:13

    makasih tutorialnya om..

    lg belajar php mysql…
    haha

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 4.0b11
    Windows Windows 7
    18 Feb 2011 10:48

    thanks atas ilmunya….

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 4.0.1
    Windows Windows XP
    21 May 2011 12:51

    sip brow..sukses..:-D

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 3.6.8
    Windows Windows XP
    16 Jun 2011 21:39

    @renita, untuk menampilkan link nya, sesuaikan dengan kebutuhan Anda, jika ingin ditampilkan dihalaman laporan misalnya, dan file laporan nya misalnya menggunakan laporan.php, maka tulis script tadi untuk menampilkan URL download laporan tersebut.

    @m-iccank, @Eko Setiawan dan @imam, sama2 bro… semoga bermanfaat.

    Like or Dislike: Thumb up 0 Thumb down 0
  • TaeGang Unite
    Mozilla Firefox Mozilla Firefox 3.0.19
    Windows Windows XP
    20 Jul 2011 20:05

    mau tanya donk,,,,,
    yang maksudnya file system apa ya ???
    masi belajar php nih…….

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 5.0
    Windows Windows XP
    20 Jul 2011 20:27

    @TaeGang Unite, maksudnya file bukan tersimpan dalam database, melainkan tersimpan dalam harddisk/folder yang biasa kita lihat melalui file manager/explorer atau lewat FTP.

    Like or Dislike: Thumb up 0 Thumb down 0
  • TaeGang Unite
    Mozilla Firefox Mozilla Firefox 3.0.19
    Windows Windows XP
    20 Jul 2011 21:30

    ohh gitu ??
    caranya gimana supaya file upload nya tersimpan di folder ???

    Like or Dislike: Thumb up 0 Thumb down 0
  • Mozilla Firefox Mozilla Firefox 5.0
    Windows Windows XP
    20 Jul 2011 22:36

    Cara simple nya bisa coba, bikin 1 folder namakan dengan upload, lalu bikin 1 file, namakan dengan upload.html, isinya berikut:

    <html>
    <body>
     
    <form action="upload_file.php" method="post"
    enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file" />
    <br />
    <input type="submit" name="submit" value="Submit" />
    </form>
     
    </body>
    </html>

    Lalu bikin satu file namakan dengan upload_file.php, isinya berikut:

    <?php
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 20000))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
     
        if (file_exists("upload/" . $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],
          "upload/" . $_FILES["file"]["name"]);
          echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
          }
        }
      }
    else
      {
      echo "Invalid file";
      }
    ?>

    Sumber: http://www.w3schools.com/php/php_file_upload.asp

    Cocokan dengan sesuai kebutuhan nya.

    Like or Dislike: Thumb up 0 Thumb down 0

Leave a Comment

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Halaman ini di eksekusi dalam waktu 2.185 detik! (mayan lah segini mah...)