将blob从android插入oracle

时间:2013-06-16 03:26:11

标签: php android oracle11g

我正在使用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 db中,但是当我看到记录时blob没有显示这样的内容

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

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