Подтвердить что ты не робот

Как хранить .pdf файлы в MySQL как BLOB файлы с помощью PHP?

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

4b9b3361

Ответ 1

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


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

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

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

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

UPDATE: 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.

Ответ 2

//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));