我試圖顯示一個PDF文件,該文件作爲BLOB文件存儲在我的數據庫中。儘管我嘗試了幾種方法,但我似乎仍然無法做到。通過PHP從數據庫輸出PDF並通過Javascript顯示它
這裏是我(試圖)從我的數據庫下載一個PDF文件:「這LINE」
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)");
}
}
我已標記的代碼應該把我的所有PDF文件從數據庫放入一個名爲$imgArray
的PDF文件數組中。然後我json_encode
的陣列,它在JavaScript中分配給imgArray
變量:
var imgArray = <?php echo json_encode($imgArray) ?>;
最後,我嘗試通過JavaScript創建一個表來顯示相同的PDF文件的4倍。 (我稱之爲createTable()
在主PHP文件):
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文件已損壞。
@timclutton不起作用..但現在的錯誤是不同的它說:流必須有數據。 –
對不起,只是刪除了那條評論,因爲我看到你調用'file_get_contents'。也刪除它!從文件位置讀取,但是您說數據是BLOB。 – timclutton
@timclutton我刪除了chunk_split和file_get_contents,現在它說「無效的pdf結構」 –