jak zapisac i potem odczytac grafikę lub dowolny plik w bazie danych, PHP Skrypty


[PHP][MySQL] Jak zapisać i potem odczytać grafikę lub dowolny plik w bazie danych?

0x01 graphic

Chcesz stworzyć tabelę, w której będą przechowywane pliki binarne, a więc grafiki, dźwięki, filmy, etc.

0x01 graphic

Zdecydowanie nie polecam upychania w bazie danych dużych plików, ponieważ można je umieścić w osobnym katalogu, a w bazie dodać tylko ścieżki do nich. Natomiast są sytuacje, gdy pliki musisz dodać, choć zdarza się to niezmiernie rzadko.

Stwórzmy sobie prostą tabelę zdjecia, do której dodamy grafikę. Tabela może się składać z dwóch pól:

CREATE TABLE zdjecia (

id INT NOT NULL PRIMARY KEY auto_increment,

obraz BLOB

);

Pole id będzie identyfikatorem zdjęcia, a obraz będzie przechowywał plik w bazie. Pola typu BLOB mogą przechowywać dowolne dane binarne, np. zdjęcia lub dźwięki, dlatego skorzystamy właśnie z takiego pola.

Aby umieścić zdjęcie w bazie, posłuż się poniższym skryptem:

<?

$plik = "1.gif";

$obraz = addslashes(fread(fopen($plik,"rb"),filesize($plik)));

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

$wynik = mysql_select_db("baza1");

if ($wynik) {

$wynik = mysql_query("INSERT INTO zdjecia VALUES ('','$obraz')");

if ($wynik) echo "Zdjęcie zostało dodane";

else echo "Zdjęcie nie zostało dodane";

} else echo "Nie można połączyć się z tabelą";

mysql_close($baza);

} else echo "Nie można połączyć się z bazą";

?>

Do zmiennej $obraz wczytywana jest zawartość pliku graficznego, który wcześniej został potraktowany funkcją addslashes(), dodającą ukośnik przed znakami cudzysłowów, aby poprawnie mógł być zapisany w bazie.

Cała reszta w tej linii to zagęszczone odczytanie pliku o określonej wielkości. Opcja r oznacza odczyt pliku, a w Windowsach trzeba jeszcze zastosować b oznaczające czytanie pliku binarnego. Stąd dwa znaki "rb".

W ten sposób możesz wstawiać kolejne zdjęcia do bazy. Gdy już je tam umieścisz, warto by je w jakiś sposób odczytać... Polecenie do wstawienia obrazka na stronę jest trywialne:

<img src="obraz.gif">

Ale ponieważ mamy pobrać obrazek z bazy, odpowiedni plik graficzny musi wygenerować skrypt. Stąd zapis ten zmodyfikuj do postaci:

<img src="pokaz.php?id=1">

Zmienna id to identyfikator obrazka, jaki ma zostać pokazany (ten z pola id w bazie). Pozostało jeszcze skonstruować skrypt pokaz.php odpowiedzialny za wyświetlenie obrazka:

<?

$id = $_GET["id"];

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

$wynik = mysql_select_db("baza1");

if ($wynik) {

$wynik = mysql_query("SELECT * FROM zdjecia WHERE id=$id");

$rekord=mysql_fetch_object($wynik);

} else echo "Nie można połączyć się z tabelą";

mysql_close($baza);

} else echo "Nie można połączyć się z bazą";

header("Content-type: image/gif");

echo stripslashes($rekord->obraz);

?>

Pobieramy w nim przekazany numer id, łączymy się z bazą, pobieramy rekord o podanym numerze id, przekształcamy go na obiekt i wypisujemy na ekran zawartość pola obraz pamiętając, aby usunąć ukośniki dodane podczas dopisywania danych do tabeli.

W zależności od rodzaju danych należy jeszcze wyświetlić poprawny nagłówek MIME, np. image/gif dla obrazków. I to już cała obsługa przechowywania i odczytywania obrazków z bazy.

Można by tu jeszcze dodać obsługę plików, które nie istnieją (np. ktoś specjalnie poda zły numer id) i wtedy możnaby pokazać jakiś obrazek z błędem, możnaby też sprawdzać czy obrazek istnieje na dysku, itd. Ale to już odbieganie od właściwego tematu i zależy od zastosowań skryptu.



Wyszukiwarka

Podobne podstrony:
Jak zapisać i potem odczytać grafikę lub dowolny plik w bazie danych, PHP Skrypty
Jak za pomocą PHP pobrać nazwy tabel dostępne w wybranej bazie danych, PHP Skrypty
Jak zakładać i kasować tabele w bazie danych, PHP Skrypty
Jak zapisać dane pochodzące z animacji do pliku lub do bazy danych, PHP Skrypty
Jak wygenerować statyczny plik .html z bazy danych, PHP Skrypty
Jak zamienić numer IP na domenę lub domenę na numer IP, PHP Skrypty
Jak zrobić stronę dostępną na hasło tylko dla wybranych użytkowników, PHP Skrypty
Jak wyświetlić zawartość katalogu jako linki służące do pobrania plików, PHP Skrypty
Jak chronić adres e-mail na stronie przed spamem stosując przekierowanie, PHP Skrypty
jak wykonac sortowanie przez zamiane wymiane wybor algorytm selection sort, PHP Skrypty
Jak zabezpieczyć się przed wielokrotnym wykonywaniem kodu po odświeżeniu strony, PHP Skrypty
Jak sprawdzić czy istnieje podany użytkownik i jego hasło jest poprawne, PHP Skrypty
Jak wysłać mailem w formacie HTML zawartość tabeli z bazy danych, PHP Skrypty
Jak sprawdzić czy numer rachunku bankowego (NRB) został wpisany poprawnie, PHP Skrypty
Jak zrobić stronę dostępną na hasło tylko dla wybranych użytkowników, PHP Skrypty
Jak wyświetlić zawartość katalogu jako linki służące do pobrania plików, PHP Skrypty
jak zapisa i odczyta dane z pendrive a sztuczki w
Jak wysłać ze strony WWW e-mail z dowolnym załącznikiem, PHP Skrypty
Jak stworzyć zaawansowany test wyboru lub quiz, PHP Skrypty

więcej podobnych podstron