Le_Traceur_Snork
@Le_Traceur_Snork
PHP-программист

Как считать BLOB из PostgreSQL через PDO?

Есть база, формат записей:
id записи || sha1 || BLOB-содержимое || имя || размер || id пользователя

Попытка исполнить код:

$query = 'SELECT * FROM "table_name" WHERE "fUserId"=:userid';
$result = $DB -> prepare($query);
$result -> execute(array(
    ':userid' => $_REQUEST['userId']
));
$result -> bindColumn(3, $file['fContent'], PDO::PARAM_LOB);
$result -> bindColumn(4, $file['fName'], PDO::PARAM_STR);
$result -> bindColumn(5, $file['fSize'], PDO::PARAM_INT);
$result -> fetch(PDO::FETCH_BOUND);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $file['fName']);
header('Content-Transfer-Encoding: "binary"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . $file['fSize']);

fpassthru($file['fContent']);

Оканчивается тем, что на скачку отдаётся файл с содержимым вида: "x255044462d312e340a25e2e3cfd30a37392030206f626a0a3c3c2f445" - т.е. бинарник приводится в
hex, а потом посимвольно в строку. Какой конкретно заголовок/заголовки мешают отдавать файл в нормальном виде .pdf ?
  • Вопрос задан
  • 178 просмотров
Решения вопроса 1
Le_Traceur_Snork
@Le_Traceur_Snork Автор вопроса
PHP-программист
Нашёл ответ.
Решением было сделать
$DB -> prepare("SET bytea_output=escape") -> execute();

Перед началом СЕЛЕКТа
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы