簡體   English   中英

PHP 將圖像文件轉換為二進制字符串

[英]PHP convert Image file to binary string

我想將從表單中檢索到的圖像轉換為二進制字符串,以便將其插入到 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;
?>

如果我 echo $data我得到一個混亂的字符串,但如果我 echo $encoded_data我只是得到: Encoded Data:然后什么都沒有。

我希望能夠使用這個二進制數據插入到我的數據庫中

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

(我知道這只是 sql 字符串 - 語句的執行不是我覺得需要包含的內容)。

更新:我意識到我的$encoded_data = base64_encode($data);有一個類型$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')"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM