It depends on your version of PHP. I'm using 4.2.2, and here's a sample upload.php (for use with Oracle):
<html>
<head>
<title>Binary LOB Upload Test</title>
</head>
<body bgcolor=white>
<?
$lob_upload = $_FILES["lob_upload"]["name"];
if (empty($lob_upload) || $lob_upload == 'none') {
print("<form action=\"{$_SERVER["PHP_SELF"]}\" method=post enctype=multipart/form-data>\n");
print("<input type=\"file\" name=\"lob_upload\"> \n");
print("<input type=submit value=\"Upload File\">\n");
print("</form>\n");
} else {
print("<pre>\n");
var_dump($_FILES);
print("</pre>\n");
$sql_blobload =
"INSERT INTO blobtest(id, localfile, sentfile, mimetype, filesize, blobdata) " .
"VALUES (seq_blobtest_id.NEXTVAL, " .
"'{$_FILES["lob_upload"]["tmp_name"]}', " .
"'{$_FILES["lob_upload"]["name"]}', " .
"'{$_FILES["lob_upload"]["type"]}', " .
"{$_FILES["lob_upload"]["size"]}, " .
"EMPTY_BLOB()) " .
"RETURNING blobdata INTO :blobdata";
print($sql_blobload);
$dbh = ocilogon(DB_LOGIN, DB_PASSWORD);
$blob = ocinewdescriptor($dbh);
$stmt = ociparse($dbh, $sql_blobload);
ocibindbyname($stmt, ':blobdata', &$blob, -1, SQLT_BLOB);
ociexecute($stmt, OCI_DEFAULT);
if($blob->savefile($_FILES["lob_upload"]["tmp_name"])) {
ocicommit($dbh);
echo "<br><br>Blob successfully uploaded\n";
} else {
echo "<br><br>Couldn't upload Blob\n";
}
ocifreestatement($stmt);
ocilogoff($conn);
}
?>
</body>
</html>