我正在做一些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/