我有一个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页面,并说无法读取该文件。有人可以帮我指出正确的方向吗?
答案 0 :(得分:0)
您的错误是:“在表中插入(上传)VALUES('{ $ uploadLocation }');“
$ uploadLocation引用一个临时名称,正确的名称是存储您创建的新名称:
INSERT INTO表(上传)VALUES('{ $ upload }');
答案 1 :(得分:0)
我已经做到了。我在这里考虑的问题太多了。我什至不需要上面的upload.php
脚本。
在数据库本身中,我使用了:
echo '<td><a href="uploads/' . $row['upload'] . '">' . $row['upload'] . '</a></td>';