PHP将图像文件转换为二进制字符串



我想将从表单中检索到的图像转换为二进制字符串,以便将其插入sqlplus表中。我仔细研究了如何进行这种转换,发现大多数解决方案都有这样的功能:

示例表:

CREATE TABLE images (
    image_id int,
    image blob 
    PRIMARY KEY (image_id));

表单:

<form method="post" enctype="multipart/form-data" action="./Upload/UploadImage.php">
<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>

建议的转换解决方案:

<?php
    $data = file_get_contents($_FILES["file"]["tmp_name"]);
    $encoded_data = base64_encode($data);
    //echo the data to check it's there
    echo "Encoded Data: " . $encoded_data;
?>

如果我回显$data,我会得到一个混乱的字符串,但如果我回隐$encoded_data,我只得到:Encoded Data:,那么什么都没有。

我希望能够使用将这些二进制数据插入我的数据库

$sql = 'INSERT INTO images VALUES (1, '' . $encoded_data . '')';

(我知道这只是sql字符串——我觉得不需要包括语句的执行(

UPDATE:我意识到我的$encoded_data = base64_encode($data);行中有一个类型,所以现在可以工作了,但sql抛出了一个字符串文字过长的错误。

$fp = fopen($_FILES['file']['tmp_name'], 'r');
$db_img = fread($fp, filesize($_FILES['file']['tmp_name']));
$db_img = addslashes($db_img);
$db_img = base64_decode($db_img);

然后

$sql = "INSERT INTO images VALUES (1,'$db_img')"

相关内容

  • 没有找到相关文章

最新更新