0

我正在使用 Oracle 数据库。我使用 PHP 作为我的 web 服务和 Android 作为客户端,它将 blob 数据发送到 Oracle DB。我使用此代码

Bitmap imageUpload = BitmapFactory.decodeFile(picturePath); ByteArrayOutputStream baos = new ByteArrayOutputStream(); imageUpload.compress(Bitmap.CompressFormat.JPEG, 60, baos); byte[] image_data = baos.toByteArray(); String converted_image = Base64.encodeBytes(image_data);

将其解码并作为 base64 编码发送,然后使用此代码将其发送到 Web 服务

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("TITLE", title));
            nameValuePairs.add(new BasicNameValuePair("IMAGES", converted_image));
            json = jsonParser.makeHttpRequest(url, "POST", nameValuePairs);

这是我要插入到 oracle db 的 PHP 代码

if(isset($_POST["TITLE"]) && isset($_POST["IMAGES"]))
{
    $title = $_POST["TITLE"];
    $image = $_POST["IMAGES"];
    $gambar = file_get_contents($image);

    $query = "INSERT INTO images (TITLE, IMAGES) VALUES (:TITLE, EMPTY_BLOB()) RETURNING IMAGES INTO :IMAGES";
    $parse = oci_parse($connect, $query);

    $lob_a = oci_new_descriptor($connect, OCI_D_LOB);

    oci_bind_by_name($parse, ":TITLE", $title);
    oci_bind_by_name($parse, ":IMAGES", $lob_a, -1, OCI_B_BLOB);
    oci_execute($parse, OCI_DEFAULT);

    if($lob_a->save($gambar))
    {
        oci_commit($connect);
        $lob_a->free();
    }
    else
    {
        oci_rollback($connect);
    }
}

PHP 代码成功地将查询插入到 oracle 数据库,但是当我看到记录时,blob 没有显示类似这样的内容

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

0

我认为这个问题的最佳解决方案是使用 Web 服务,使用 base64 编码对图片进行编码,然后在文件传输时对其进行解码。

于 2013-06-24T12:15:35.703 回答