Я работаю в устаревшей системе, которая хранит файлы в БД как LONGBLOB
. Я пытаюсь добиться того, чтобы пользователь мог перейти по URL-адресу и загрузить определенный файл.Теперь, когда я пытаюсь прочитать файл, мне кажется, что я что-то упустил.PHP дает мне readfile() expects parameter 1 to be a valid path, string given [] []
Так что я могу сделать вывод, что не могу напрямую передать LONGBLOB
в метод readfile()
.Есть ли другой способ передать файл пользователю?
Вот код, который я сейчас пытаюсь использовать:
$stmt = $this->db->prepare('SELECT * FROM DOC_Documents WHERE DOC_ID = ?');
$stmt->execute([$docID]);
$document = $stmt->fetch();
$filename = str_replace(' ', '', $document['DOC_Name']);
$filename .= '.';
$filename .= $document['DOC_Extension'];
header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
header('Content-Description: File Transfer');
header("Content-Type: " . $document["DOC_Type"]);
header("Content-Disposition: attachment; filename=" . $filename);
readfile(trim($document['DOC_File']));