使用PHP链接到存储在MySQL数据库中的PDF文件

时间:2019-06-24 15:28:36

标签: php

我有一个MySQL数据库,其中显示了来自Web表单的各种用户输入。在单独的页面上,数据库显示给我的员工。我想在数据库中有一个链接,单击该链接即可显示上载的PDF文件。

我已经研究了2个星期,没有一个解决方案对我有用。我已经搜索了Stack Overflow,以及与我的问题相关的Google搜索中出现的其他多个网站。我知道这应该是一个简单的解决方法,但是我认为我对此事考虑得太深了。

要将文件路径上传到我的数据库中,我使用了:

<?php
    $database = "db";

    $mysqli = new mysqli("localhost", "root", "", $database);
    mysqli->select_db($database);

    $upload = rand(1000,100000)."-".$_FILES['upload']['name'];
    $uploadLocation = $_FILES['upload']['tmp_name'];

    $folder = "uploads/";

    move_uploaded_file($uploadLocation, $folder.$upload);

    $query = "INSERT INTO table (upload) VALUES ('{$uploadLocation}');

    $mysqli->query($query);
    $mysqli->close();
?>

要在单独的页面上查看数据库,我使用了:

<?php
    $result = mysqli_query($mysqli, "SELECT upload FROM table");

    if ($result) {
        while($row = mysqli_fetch_array($result)) {
            echo '<td><a href="upload.php">' . $row['upload'] . '</a></td>';
        }
    }

    mysqli_free_result($result);
?>

单击指向PDF文件的链接时,我使用了:

<?php
    $file = ' . $folder.$upload . ';
    $filename = ' . $folder.$upload . ';
    header('Content-type: application/pdf');
    header('Content-Disposition: inline; filename="' . $filename . '"');
    header('Content-Transfer-Encoding: binary');
    header('Accept-Ranges: bytes');
    @readfile($file);
?>

我认为问题出在单击PDF的页面上。其他2页工作正常,一切都应显示在数据库中。但是,当您单击数据库中的PDF文件链接时,浏览器中会弹出一个Acrobat Reader页面,并说无法读取该文件。有人可以帮我指出正确的方向吗?

2 个答案:

答案 0 :(得分:0)

您的错误是:“在表中插入(上传)VALUES('{ $ uploadLocation }');“

$ uploadLocation引用一个临时名称,正确的名称是存储您创建的新名称:

INSERT INTO表(上传)VALUES('{ $ upload }');

答案 1 :(得分:0)

我已经做到了。我在这里考虑的问题太多了。我什至不需要上面的upload.php脚本。

在数据库本身中,我使用了:

echo '<td><a href="uploads/' . $row['upload'] . '">' . $row['upload'] . '</a></td>';