我试图将我存储在数据库中的PDF文件显示为BLOB文件。虽然我尝试了几种方法,但我似乎无法做到这一点。
以下是我(尝试)从我的数据库下载PDF文件的方法:
function fillArrays(){
$idArray = array();
$sql = "SELECT oglas_id,slika,prioriteta FROM deska WHERE deska.datumz <= CURRENT_DATE AND deska.datumk >= CURRENT_DATE;";
$result = mysqli_query($GLOBALS['conn'],$sql);
$resultCheck = mysqli_num_rows($result);
if($resultCheck>0){
while($row = mysqli_fetch_assoc($result)){
array_push($GLOBALS['idArray'],$row['oglas_id']);
$b64Doc = chunk_split(base64_encode(file_get_contents($row['slika']))); // THIS LINE!
$file = "data:application/pdf;base64,".$b64Doc; // THIS LINE!
array_push($GLOBALS['imgArray'],$file); // THIS LINE!
array_push($GLOBALS['prArray'],$row['prioriteta']);
}
}else{
die("Oops there seems to be an error(arr)");
}
}
代码我已标记为&#34;此行!&#34;应该将数据库中的所有PDF文件放入一个名为$imgArray
的PDF文件数组中。然后我json_encode
数组并将其分配给JavaScript中的imgArray
变量:
var imgArray = <?php echo json_encode($imgArray) ?>;
最后,我尝试在通过JavaScript创建的表格中显示相同的PDF文件4次。 (我在主PHP文件中调用createTable()
):
var idArray = window.idArray;
var imgArray = window.imgArray;
var prArray = window.prArray;
var screenH = screen.height/2.1;
var screenW = screen.width/2.1;
var tdW;
var tdH;
function createTables(){
if(idArray.length>2){
rows=2;
cols=2;
tdW='100%';
tdH='100%';
}else if(idArray.length==2){
rows=1;
cols=2;
tdW='100%';
tdH='100%';
}else if(idArray.length==1){
tdW='100%';
tdH='100%';
}
var table = '';
for(var r=0;r<rows;r++){
table += '<tr>';
for(var c=0;c<cols;c++){
table += '<td style="max-width:'+tdW+';max-height:'+tdH+';" id="c'+c+r+'">';
table += '<embed src="'+imgArray[1]+'" type="application/pdf" style="max-height:'+screenH+';max-width:'+screenW+';">';
table += '</td>';
}
table += '</tr>';
}
document.write("<table>"+table+"</table>");
}
请参阅我尝试嵌入pdf文件的代码底部。网站上的输出是:
语言是斯洛文尼亚语,它说PDF文件已损坏。
答案 0 :(得分:0)
您json_encode
数据服务器端,但不要在客户端调用JSON.parse
。这意味着您将JSON编码的数据直接输出到<script src="">
属性。
更改PHP编码过程以删除不必要的函数调用:
$b64Doc = base64_encode($row['slika']);
然后,您需要修改JavaScript以正确解析JSON。类似的东西:
var imgArray = JSON.parse('<?= json_encode($imgArray); ?>');
for (var i = 0; i < imgArray.length; i++) {
table += '<embed src="' + imgArray[i] + '"></embed>';
}