2015-06-12 67 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