2015-06-12 88 views
-1

隨着數據庫連接正常,當我嘗試下載文件時,我得到的內容是我正在處理的這個文件的一個php頁面。而不是上傳到數據庫的文件。這是爲什麼發生?從數據庫下載文件

$query = "SELECT id, name FROM docu"; 
$result = mysqli_query($con,$query) or die('Error, query failed'); 

if(mysqli_num_rows($result)==0){ 
    echo "Database is empty <br>"; 
} 
else{ 
    while(list($id, $name) = mysqli_fetch_array($result)){ 
     echo "<a href='download.php?id='$id>$name</a><br>"; 
    } 
} 

if(isset($_GET['id'])){ 
    $id = $_GET['id']; 
    $query = "SELECT id, name, type, size, content FROM docu WHERE id = '$id'";  
    $result = mysqli_query($con,$query) or die('Error, query failed'); 
    list($id, $name, $type, $size, $content) = mysqli_fetch_row($result); 
    header("Content-Disposition: attachment; filename='$name'"); 
    header("Content-type: $type"); 
    header("Content-length: $size"); 
    echo $content; 
    exit; 
} 
+1

你不能有迴音和標題。另外,您的查詢可能失敗。 –

+0

在打開PHP標記 (例如'<?php error_reporting(E_ALL);)後立即向文件頂部添加錯誤報告。 ini_set('display_errors',1);'然後你的代碼的其餘部分,看看它是否產生任何東西, 以及'或die(mysqli_error($ con))'到'mysqli_query()'。 –

+0

你也用相同的變量查詢兩次。向我們展示數據庫模式和行內容。如果您的列不是BLOB,則文件必須存在於您的服務器上。 –

回答

0

修改代碼

while ((list($id, $name) = mysqli_fetch_array($result, MYSQLI_BOTH)){echo $name . " " . $id. " " ."<a href=download.php?id=$id>$name</a><br>"; } 

中的download.php使用

if(isset($_GET['id'])){ 
$id = $_GET['id']; 
$query = "SELECT id, name, type, size, content FROM docu WHERE id = '$id'"; $result = mysqli_query($link, $query);$row = mysqli_fetch_array($result, MYSQLI_BOTH);$size = $size;$type = $type;$name =$name;header("Content-length: $size");header("Content-type: $type");header("Content-Disposition: attachment; filename=$name");}mysqli_close($link); 
+0

' $ row ['area_of_exp']'你假設OP有一個名爲'area_of_exp'的行,爲什麼? –

+0

我更新了它...... ins名爲$ name和$ id – Bruce