Как сохранить файлы .pdf в MySQL как BLOB-файлы с использованием PHP? - PullRequest
15 голосов
/ 27 января 2011

Как сохранить файлы .pdf в MySQL как BLOB-файлы из PHP?

Ответы [ 3 ]

11 голосов
/ 27 января 2011

EDITED TO ADD : следующий код устарел и не будет работать в PHP 7. Подробнее см. Примечание внизу ответа.


Предполагается, чтоструктура таблицы целочисленного идентификатора и столбца BLATA-данных, и предполагая, что функции MySQL используются для взаимодействия с базой данных, вы, вероятно, могли бы сделать что-то вроде этого:

$result = mysql_query 'INSERT INTO table (
    data
) VALUES (
    \'' . mysql_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf')) . '\'
);';

Слово предупреждения, сохраняяBLOB-объекты в базах данных, как правило, не считаются наилучшей идеей, поскольку они могут вызвать раздувание таблиц и связаны с рядом других проблем.Лучшим подходом было бы переместить файл куда-нибудь в файловой системе, где его можно извлечь, и сохранить путь к файлу в базе данных вместо самого файла.

Кроме того, использование вызовов функций mysql_ * не рекомендуется, поскольку эти методы фактически устарели и на самом деле не созданы с учетом версий MySQL, более ранних, чем 4.x.Вместо этого вам следует переключиться на mysqli или PDO.

ОБНОВЛЕНИЕ : функции mysql_ * устарели в PHP 5.x и УДАЛЕНЫ ПОЛНОСТЬЮ ВPHP 7! Теперь у вас нет выбора, кроме как переключиться на более современную абстракцию базы данных (MySQLI, PDO).Я решил оставить оригинальный ответ без изменений по историческим причинам, но фактически не использую его

Вот как это сделать с помощью mysqli в процедурном режиме:

$result = mysqli_query ($db, 'INSERT INTO table (
    data
) VALUES (
    \'' . mysqli_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf'), $db) . '\'
);');

Идеальный способделать это с подготовленными заявлениями MySQLI / PDO.

1 голос
/ 25 апреля 2018

Что касается ответа Гордона М выше, 1-й и 2-й параметры в вызове mysqli_real_escape_string () должны быть заменены для более новых версий php, согласно: http://php.net/manual/en/mysqli.real-escape-string.php

0 голосов
/ 03 мая 2017
//Pour inserer :
            $pdf = addslashes(file_get_contents($_FILES['inputname']['tmp_name']));
            $filetype = addslashes($_FILES['inputname']['type']);//pour le test 
            $namepdf = addslashes($_FILES['inputname']['name']);            
            if (substr($filetype, 0, 11) == 'application'){
            $mysqli->query("insert into tablepdf(pdf_nom,pdf)value('$namepdf','$pdf')");
            }
//Pour afficher :
            $row = $mysqli->query("SELECT * FROM tablepdf where id=(select max(id) from tablepdf)");
            foreach($row as $result){
                 $file=$result['pdf'];
            }
            header('Content-type: application/pdf');
            echo file_get_contents('data:application/pdf;base64,'.base64_encode($file));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...