我从数据库下载图像的功能不起作用

时间:2019-04-12 23:14:56

标签: php mysql

我有一个文件上传,可以将图像上传到数据库,并且可以正常工作,但是我的下载无法正常工作,并且不会弹出错误,并且不确定为什么不正常。我的数据库表如下id,image,image_name和image为blob。

这是我的下载代码:

download.php

$connection = mysqli_connect($host, $user, $pass, $name);

if(isset($_GET['id'])){
    $id = $_GET['id'];
    $stat = $connection->prepare("SELECT * FROM image_centre where id=?");
    $stat->bind_param('i',$id);
    $stat->execute();
    $data= $stat->fetch();

    $file = 'images/'.$data['image_name'];

    if(file_exists($file)){
        header('Content-Description: '.$data['description']);
        header('Content-Type: '.$data['type']);
        header('Content-Disposition: '.$data['disposition'].'; image_name="'.basename($file).'"');
        header('Expires: '.$data['expires']);
        header('Cache-Control: '.$data['cache']);
        header('Pragma: '.$data['pragma']);
        header('Content-Length: '.filesize($file));
        readfile($file);
        exit;


    }

}

下面是将download.php链接到的按钮

<td><a href="includes/download.php?id=<?php $IID?>" class="btn btn-primary">Download</a></td>

1 个答案:

答案 0 :(得分:0)

要找出问题所在,可以(用于调试)

  1. 直接在浏览器中运行include / download.php?id = xx,即http://yourdomain.xx/includes/download.php?id=20(从您知道有效的数据库中找到一个ID)

  2. 将else语句添加到if语句中,并打印出一些调试信息,例如:

if(file_exists($file)){
   // Your code
}
else {
   print "The file does not exist there";
}
  1. 检查您是否确实从$ data获得了一些数据,例如
if (is_array($data = $stat->fetch())) {
   // Record found, check if file exist and send file...
}
else {
   print "No record found";
}

基本上,找出失败的地方...