我正在尝试从HTML表单中获取图像并使用PHP将其插入到sqlplus数据库中。我在网上看了一些解决方案并且使用了点点滴滴,但我似乎无法做到这一点。
这是我到目前为止所做的:
表格:
(注意:我现在只尝试填充record_id
,image_id
,regular_size
。
CREATE TABLE pacs_images (
record_id int,
image_id int,
thumbnail blob,
regular_size blob,
large_size blob,
PRIMARY KEY (record_id, image_id),
FOREIGN KEY (record_id) REFERENCES radiology_record);
形式:
<form method="post" enctype="multipart/form-data" action="./Upload/UploadImage.php">
Record ID: <select name="record_id">
<option value="empty">empty</option>
<?php displayRecords(); ?>
</select><span style="color: #FF0000;">*</span><br/>
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><span style="color: #FF0000;">*</span><br/>
<input type="submit" name="uploadImage" value="Upload Image">
</form>
UploadImage.php的相关组件:
function buildQuery() {
//Generates random unique id for image
$imageID = generateImageID();
// Connects to the db
$conn = connect();
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$sql = "INSERT INTO pacs_images (record_id, image_id, regular_size) VALUES (" .
$_POST['record_id'] . ', ' . $imageID . ', \'' .
file_get_contents($_FILES['file']['tmp_name']) . '\')';
$stid = oci_parse($conn, $sql);
$res = oci_execute($stid);
if (!$res) {
$_SESSION['err'] = True;
$_SESSION['err_msg'] = "Failed to add image";
}
oci_close();
header('Location: ../UploadPage.php');
exit(1);
}
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts)) {
if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br/>";
} else {
buildQuery();
}
}
一些注意事项:
addslashes(file_get_contents(...))
,但没有帮助。只是寻找一些关于如何处理这个问题的建议,我做错了什么。
由于