javascript - 使用URL.createObjectURL()处理来自数据库的Blob图像

标签 javascript php blob oci8

我正在做一些Ajax调用,以从服务器接收一些Blob。我想使用URL.createObjectURL()方法在浏览器上显示它。根据docs,它必须接受一个对象。

我需要帮助,如何在PHP中将其作为对象返回并在浏览器中显示结果。 (result.innerHTML = "....";

$get_blob_pst = oci_parse($conn,"SELECT ITEMIMG_IMAGE BLOB FROM SCT_ITEM_IMAGE WHERE ITEM_ID_NO=:ITEM_ID");

    oci_bind_by_name($get_blob_pst, ":ITEM_ID", $row->ID);

    if( oci_execute($get_blob_pst) ):
    while ( $row2 = oci_fetch_array($get_blob_pst, OCI_RETURN_LOBS) ) {
        $row2['BLOB'] = base64_encode($row2['BLOB']);
        $result[] = $row2;
        }
    endif;
   echo json_encode($result);


Ajax完成的方法:

let blob = URL.createObjectURL(data.BLOB);
 result.innerHTML = "<img src=''/>";

最佳答案

您可以直接返回您的JavaScript可直接使用的数据URI数组:

$get_blob_pst = oci_parse($conn,"SELECT ITEMIMG_IMAGE BLOB FROM SCT_ITEM_IMAGE WHERE ITEM_ID_NO=:ITEM_ID");

oci_bind_by_name($get_blob_pst, ":ITEM_ID", $row->ID);

if( oci_execute($get_blob_pst) ):
while ($row2 = oci_fetch_array($get_blob_pst, OCI_RETURN_LOBS)) {
    $data = base64_encode($row2['BLOB']);
    // supposed your images are always png, or you need a way to determine
    // the correct mime type string of the image (the "image/png" part)
    $results[] = "data:image/png;base64,{$data}";
}
echo json_encode($results);


for (let dataURI of data) {
  result.innerHTML += `<img src="${dataURI}"/>`;
}

关于javascript - 使用URL.createObjectURL()处理来自数据库的Blob图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57850989/

相关文章:

azure - 如何检测或计数 Azure blob 下载?

java - 将 blob 提取到文件 : some files are missing data

javascript - 点击一个物体,得到另一个物体?

javascript - 这是子类还是新实例?

php - 如何计算 PHP 中的 MySQL 数组值?

php - 当用户提交具有不同数据的表单时终止第一个查询

php - 解码这个PHP?

php - 视频灯箱有问题吗?

javascript - CSS:如何从 Javascript 变量设置以中间为原点的元素位置?

database - 如何使用 Solr 4.0+ 索引作为数据库 BLOB 包含的格式丰富的文档?