Съхранявайте файлове в BLOB полета с PHP и MySQL

Съдържание

Когато създаваме софтуер или уебсайт, който използва файлове, трябва да решим как да ги съхраняваме, една от възможностите е да създадем папка и да съхраняваме файловете там, а друга възможност е да ги съхраняваме в базата данни, трябва да имаме предвид че поле longblob може да съхранява до 4 гигабайта.

Двигателят на базата данни mySQL ви позволява да използвате блокови полета, които съхраняват информация в двоичен формат. Този формат ви позволява да съхранявате различни типове файлове, като Word, Excel, всякакъв вид изображения, pdf файлове и др. В този урок ще видим как да съхранявате файлове в таблица с MySQL база данни, данните ще бъдат изпратени от html формуляр и обработени с PHP за запазване на файловете в базата данни.

За да изпълним примерите от урока, ще ни трябва отдалечен сървър или локален, който може да бъде инсталиран, както видяхме в урока:

  • Как да инсталираме Xampp, за да превърнем компютъра ви в уеб сървър, по този начин ще имаме поддръжка за php и mysql и всички необходими библиотеки.

След това ще създадем базата данни, която ще съхранява данни за превозното средство, със снимков и pdf технически лист, за което ще създадем от phpmyadmin пример да се нарече дилър. След това ще създадем таблицата с коли.

 CREATE DATABASE дилър; Структура на таблица за таблица `autos` CREATE TABLE` autos` (` id` int (11) NOT NULL, `mark` varchar (150) DEFAULT '0',` model` varchar (150) DEFAULT '0', `photo` longblob) ДВИГАТЕЛ = InnoDB ПО подразбиране CHARSET = latin1; Индекси на таблицата `autos` ALTER TABLE` autos` ADD PRIMARY KEY (` id`); AUTO_INCREMENT на дъмпинговите таблици AUTO_INCREMENT на таблицата `autos` ALTER TABLE` autos` MODIFY` id` int (11) NOT NULL AUTO_INCREMENT;
Код за създаване на таблица

Ние създаваме PHP страници и формуляр за регистрация на данни
Тогава ще създадем файл config.php от където ще се свържем с базата данни:

 
Config.php

След това ще създадем страница в PHP, която ще отговаря за изброяването на всички записи на таблицата с автомобили.

 <? изхвърли "
"; изхвърлен"
"; изхвърлен""; изхвърлен""; изхвърлен""; изхвърлен""; изхвърлен"

"; $ result = mysql_query (" SELECT * FROM `autos`") или trigger_error (mysql_error ()); редове [$ ключ] = ивици ($ стойност);} ехо "
"; изхвърлен""; изхвърлен""; изхвърлен""; изхвърлен" "; изхвърлен"

";} изхвърлен"
МаркаМоделСнимкаДействия
". $ rows ['mark']."". $ rows ['model']." Вижте снимкатаредактиране Премахване
"; ехо" Нова кола ";?> var13 ->
Избройте всички записи в таблицата

Формулярът за регистриране на данните, който ни позволява да регистрираме снимка, за това трябва да използваме файлови елементи, които ни позволяват да изберем файл от браузъра и след това да го обработим с PHP и да запишем данните в блобните полета на нашата таблица за автомобили от базата данни.

Създаване на уеб на нашия сървър
Ние създаваме мрежата в папка, наречена концесионер на нашия сървър. Уеб страницата ще съдържа HTML и PHP кода, във формата, която трябва да използваме атрибута enctype = "multipart / form-data" което показва, че файловете могат да се изпращат чрез формуляра, ако той няма атрибута, файловете не могат да се изпращат.

Тази страница ще бъде извикана high.php

Кодът е следният:

 $ стойност) {$ _POST [$ ключ] = mysql_real_escape_string ($ стойност); } // четем данни от снимката $ photo = $ _FILES ["снимка"] ["tmp_name"]; $ photoname = $ _FILES ["снимка"] ["име"]; // това е файлът, който ще добавим към полето за петна $ foto = $ _FILES ['foto'] ['tmp_name']; // преобразуваме го в двоичен, преди да го запишем $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "INSERT INTO` автомобили" (`марка`,` модел`, `снимка`) СТОЙНОСТИ ('{$ _POST [' марка ']}}', '{$ _POST [' модел ']}}', '$ Снимка ') "; mysql_query ($ sql) или die (mysql_error ()); header ('Местоположение: Listautos.php'); }?> var13 ->

Марка:

Модел:

Снимка:

След това ще трябва да го покажем за него, ще създадем страница, която интерпретира двоичния файл и го показва, ще създадем страницата verfoto.php и ще посочим идентификатора на снимката, която да покажем.
 неозаглавен документ

Също така можем да извлечем атрибутите на файла, ако имаме нужда от него по следния начин:

 
Файлът се съхранява временно в паметта по време на процеса, ако възникне грешка, данните могат да бъдат загубени или да не бъдат записани напълно, PHP скриптът премахва временния файл от паметта след приключване на процеса, дори ако не завърши правилно.

След това ще създадем страницата за редактиране на данните на автомобил, който ще извикаме edit.php

 $ стойност) {$ _POST [$ ключ] = mysql_real_escape_string ($ стойност); } // четем данни от снимката $ photo = $ _FILES ["снимка"] ["tmp_name"]; $ photoname = $ _FILES ["снимка"] ["име"]; // това е временният файл $ photo = $ _FILES ['photo'] ['tmp_name']; // чете временния файл в двоичен $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["снимка"] ["tmp_name"])); $ sql = "АКТУАЛИЗИРАНЕ" на автомобилите `SET` brand` = '{$ _POST [' brand ']}', `model` = '{$ _POST [' model ']}',` photo` = '$ photo' КЪДЕ `id` = '$ id'"; mysql_query ($ sql) или die (mysql_error ()); header ('Местоположение: Listautos.php'); } $ rows = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE` id` = '$ id' ")); ?> var13 ->

Марка:

Модел:

Модел:

Снимка:

>

Трябва да имаме предвид, че ако изтрием запис, ще изтрием файловете едновременно и те не могат да бъдат възстановени. За да изтрием запис, ще създадем страницата delete.php и ще използваме следния код.
 
Направихме прост код без много дизайн, за да обясним как да съхраняваме файлове в блоб полета, един от недостатъците е, че размерът на базата данни нараства много при съхранение на файлове в двоичен формат.
Едно от предимствата е, че файловете се записват в таблица, което е по -добре от съображения за сигурност, тъй като файловете могат да бъдат достъпни само ако имате разрешения за управление на базата данни и няма една физическа папка, от която да изтеглите файловете или да ги манипулирате от нападател.

Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave