Kiedy tworzymy oprogramowanie lub serwis internetowy, który wykorzystuje pliki, musimy zdecydować, jak je przechowywać, jedną z możliwości jest utworzenie folderu i przechowywanie tam plików, a inną możliwością jest przechowywanie ich w bazie danych, musimy pamiętać że pole długowłosy może przechowywać do 4 gigabajtów.
Silnik bazy danych mySQL umożliwia korzystanie z pól blokowych, które przechowują informacje w formacie binarnym. Ten format pozwala na przechowywanie różnego rodzaju plików, takich jak Word, Excel, wszelkiego rodzaju obrazy, pliki pdf itp. W tym samouczku zobaczymy jak przechowywać pliki w tabeli bazy danych MySQL, dane zostaną wysłane z formularza html i przetworzone za pomocą PHP w celu zapisania plików w bazie danych.
Aby wykonać przykłady z samouczka, będziemy potrzebować serwera zdalnego lub lokalnego, który można zainstalować, tak jak widzieliśmy w samouczku:
- Jak zainstalować Xampp, aby zamienić swój komputer w serwer WWW, w ten sposób będziemy mieli obsługę php i mysql oraz wszystkie niezbędne biblioteki.
Następnie stworzymy bazę danych, która będzie przechowywać dane pojazdu, ze zdjęciem i kartą techniczną w formacie pdf, do tego stworzymy z phpmyadmin przykład, który można nazwać krupierem. Następnie stworzymy tabelę samochodów.
STWÓRZ BAZĘ DANYCH dealera; Struktura tabeli dla tabeli `autos` CREATE TABLE` autos` (`id` int (11) NOT NULL,` mark` varchar (150) DEFAULT '0', `model` varchar (150) DEFAULT '0',` photo` longblob) SILNIK = DOMYŚLNY ZESTAW ZNAKÓW InnoDB = latin1; Indeksy tabeli `autos` ALTER TABLE` autos` ADD PRIMARY KEY (`id`); AUTO_INCREMENT zrzuconych tabel AUTO_INCREMENT tabeli `autos` ALTER TABLE` autos` MODIFY `id` int (11) NOT NULL AUTO_INCREMENT;Kod tworzenia tabeli
Tworzymy strony PHP i formularz do rejestracji danych
Następnie utworzymy plik config.php skąd połączymy się z bazą danych:
Konfiguracja.php
Następnie stworzymy stronę w PHP, która będzie odpowiedzialna za wyświetlanie wszystkich rekordów tabeli autos.
<? wyrzucił "
Marka | "; wyrzucił "Model | "; wyrzucił "Zdjęcie | "; wyrzucił "działania | "; wyrzucił "|
". $ wiersze ['znak']." | "; wyrzucił "". $ wiersze ['model']." | "; wyrzucił "Zobacz zdjęcie | "; wyrzucił "Edytować | Usunąć | "; wyrzucił "
Formularz do rejestracji danych pozwalający na zarejestrowanie zdjęcia, do tego musimy użyć elementów file, które pozwolą nam wybrać plik z przeglądarki, a następnie przetworzyć go za pomocą PHP i zapisać dane w polach blob naszej tabeli autos z baza danych.
Tworzenie strony internetowej na naszym serwerze
Stronę tworzymy w folderze o nazwie koncesjonariusz na naszym serwerze. Strona internetowa będzie zawierała kod HTML i PHP, w postaci musimy użyć atrybutu enctype = "wieloczęściowe / dane formularza" oznacza to, że pliki można wysyłać za pośrednictwem formularza, jeśli nie posiada atrybutu, pliki nie mogą zostać wysłane.
Ta strona będzie się nazywać wysoki.php
Kod jest następujący:
wartość $) {$ _POST [klucz $] = mysql_real_escape_string (wartość $); } // odczytujemy dane ze zdjęcia $ photo = $ _FILES ["photo"] ["tmp_name"]; $ nazwa zdjęcia = $ _FILES ["zdjęcie"] ["nazwa"]; // to jest plik, który dodamy do pola blob $ foto = $ _FILES ['foto'] ['tmp_name']; // konwertujemy go na binarny przed zapisaniem $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "INSERT INTO` cars` (`marke`,` model`, `photo`) WARTOŚCI ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Zdjęcie' ) "; mysql_query ($ sql) lub umrzeć (mysql_error ()); nagłówek ('Lokalizacja: Listautos.php'); }?> zm13 ->Następnie będziemy musieli to pokazać, dla tego stworzymy stronę, która interpretuje plik binarny i pokazuje go, stworzymy stronę verfoto.php a my wskażemy identyfikator zdjęcia do pokazania.Marka:
Model:
Zdjęcie:
nienazwany dokumentMożemy również wyodrębnić atrybuty pliku, jeśli tego potrzebujemy, w następujący sposób:
Plik jest tymczasowo przechowywany w pamięci podczas procesu, w przypadku wystąpienia błędu dane mogą zostać utracone lub nie w pełni zapisane, skrypt PHP usuwa plik tymczasowy z pamięci po zakończeniu procesu, nawet jeśli nie kończy się on poprawnie.Następnie stworzymy stronę do edycji danych samochodu, do którego będziemy dzwonić edit.php
wartość $) {$ _POST [klucz $] = mysql_real_escape_string (wartość $); } // odczytujemy dane ze zdjęcia $ photo = $ _FILES ["photo"] ["tmp_name"]; $ nazwa_zdjęcia = $ _FILES ["zdjęcie"] ["nazwa"]; // to jest plik tymczasowy $ photo = $ _FILES ['photo'] ['tmp_name']; // odczytaj plik tymczasowy w postaci binarnej $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "UPDATE` cars` SET `brand` = '{$ _POST ['brand ']}',` model` = '{$ _POST [' model ']}', `photo` = '$ photo' WHERE `identyfikator` = 'identyfikator $'"; mysql_query ($ sql) lub umrzeć (mysql_error ()); nagłówek ('Lokalizacja: Listautos.php'); } $ rows = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE `id` = '$id'")); ?> zm13 ->Musimy pamiętać, że jeśli usuniemy rekord, jednocześnie usuniemy pliki i nie będzie można ich odzyskać. Aby usunąć rekord, utworzymy stronę usuń.php i użyjemy następującego kodu.Marka:
Model:
Model:
Zdjęcie:
>
Stworzyliśmy prosty kod bez zbytniego projektu, aby wyjaśnić, jak przechowywać pliki w polach blob, jedną z wad jest to, że rozmiar bazy danych znacznie rośnie podczas przechowywania plików w formacie binarnym.
Jedną z zalet jest to, że pliki są zapisywane w tabeli, co jest lepsze ze względów bezpieczeństwa, ponieważ dostęp do plików można uzyskać tylko wtedy, gdy masz uprawnienia do zarządzania bazą danych i nie ma jednego folderu fizycznego, z którego można pobrać pliki lub manipulować nimi przez atakującego. Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt