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
< method="`post`" action="`upload.php`" enctype="`multipart/form-data`">
< width="`350`" border="`0`" cellpadding="`1`" cellspacing="`1`" class="`box`">
<>
< width="`246`">
< type="hidden" name="`MAX_FILE_SIZE`" value="`2000000`">
< name="userfile" type="file" id="userfile">
< /td>
< width="`80`">< name="`upload`" type="`submit`" class="`box`" id="`upload`" value="`">
< /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.
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 “
File $fileName uploaded
”;
}
?>
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