从表单中检索BLOB并使用PHP插入到sqlplus db中

时间:2014-03-18 19:27:49

标签: php database blob

我正在尝试从HTML表单中获取图像并使用PHP将其插入到sqlplus数据库中。我在网上看了一些解决方案并且使用了点点滴滴,但我似乎无法做到这一点。

这是我到目前为止所做的:

表格: (注意:我现在只尝试填充record_idimage_idregular_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();
    }   
}

一些注意事项:

  • 这不是任何项目的主要部分,它只是一个小项目 要求我在寻找建议
  • 我意识到在db中存储大文件不是最好的做法,但这就是我给出的。
  • 我尝试添加addslashes(file_get_contents(...)),但没有帮助。

只是寻找一些关于如何处理这个问题的建议,我做错了什么。

由于

0 个答案:

没有答案