Menggunakan PHP untuk mengupload file ke dalam database MySQL kadang dibutuhkan oleh beberapa aplikasi berbasis web. Sebagai contoh untuk menyimpan file-file pdf atau gambar untuk membuat tempat penyimpanan yang bersifat online.

Untuk membuat aplikasi upload ini, langkah pertama buatlah sebuah table dengan menggunakan phpMyAdmin atau langsung dari mysql shell command:

CREATE TABLE upload (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
type VARCHAR(30) NOT NULL,
size INT NOT NULL,
content MEDIUMBLOB NOT NULL,
PRIMARY KEY(id)
);

Kemudian buatlah form untuk upload filenya

<form method="post" action="upload.php" enctype="multipart/form-data">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>

Form upload harus terdapat encytype="multipart/form-data" jika tidak maka tidak akan bekerja. Dan form method gunakan method="post". Gunakan input hidden MAX_FILE_SIZE sebelum file input. Akan membatasi ukuran file yang akan diupload.

Kemudian buatlah file untuk menerima kiriman variable post dari form upload file.
<?php
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$fp = fopen($tmpName, ‘r’);
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}

include ‘library/config.php’;
include ‘library/opendb.php’;

$query = “INSERT INTO upload (name, size, type, content ) “.
“VALUES (’$fileName’, ‘$fileSize’, ‘$fileType’, ‘$content’)”;

mysql_query($query) or die(’Error, query failed’);
include ‘library/closedb.php’;

echo “<br>File $fileName uploaded<br>”;
}
?>

Bila ingin membuat aplikasi dengan spesifikasi file yang lebih besar, seperti file mp3, film, dan file-file besar lainnya, ada beberapa setting yang perlu diubah dari Web Server (php.ini), MySQL (my.cnf)

php.ini
upload_max_filesize = 127M
post_max_size = 127M
max_execution_time = 360

my.cnf
[mysqld]
max_allowed_packet = 127M