Я храню PDF-файлы в файловой системе и путь в таблице базы данных. Теперь я хочу на основе идентификатора открыть соответствующий документ PDF в браузере. Как я могу открывать и читать PDF-файлы? То, что у меня есть, это
require_once("database.php");
if(isset($_GET['upload_id']) && is_numeric($_GET['upload_id']))
{
$fileFolder='uploads/';
$sql = "SELECT file FROM documents WHERE upload_id = :id";
$result = $pdo->prepare($sql);
$result->bindParam(":id", $_GET['upload_id']);
$result->execute();
$resArray = $result->fetchAll();
$file = $resArray['file'];
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Type: application/pdf');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($fileFolder.$file));
@read($fileFolder.$file);
}
Когда я нажимаю на кнопку и пытаюсь открыть PDF-файл, я получил это сообщение в Chrome
Не удалось загрузить документ PDF ПЕРЕЗАГРУЗИТЬ
2 ответа
Вы можете получить имя своего файла, используя fetch(PDO::FETCH_ASSOC);
, который возвращает следующую строку как массив, проиндексированный column name
$sql = "SELECT file FROM documents WHERE upload_id = :id";
$result = $pdo->prepare($sql);
$result->bindParam(":id", $_GET['upload_id']);
$result->execute();
$resArray = $result->fetch(PDO::FETCH_ASSOC);
$file = $resArray['file'];// get your file name
Используя fetchAll
Пройти PDO::FETCH_COLUMN, 0
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
$file = $resArray[0];// get your file name
Попробуйте следующее:
require_once("database.php");
if(isset($_GET['upload_id']) && is_numeric($_GET['upload_id']))
{
$fileFolder='uploads/';
$sql = "SELECT file FROM documents WHERE upload_id = :id";
$result = $pdo->prepare($sql);
$result->bindParam(":id", $_GET['upload_id']);
$result->execute();
$resArray = $result->fetchAll();
$file = $resArray['file'];
$myFilePath = $fileFolder . $file;
if (file_exists($myFilePath)) {
// the file exists, so open it
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Type: application/pdf');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($fileFolder.$file));
@read($fileFolder.$file);
} else {
// the file doesn´t exits
// handle the error if neccessary
echo "the file doesn´t exist";
}
}
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.