Z tym problemem często spotykam się w pracy.
Standardowe zagadnienie - klient chce wrzucać obrazki na stronę, a my ze względu na bazę zapisujemy je jako pliki, a w bazie co najwyżej ścieżkę do niego.
No i niestety przeniesienie systemu na inny serwer (np. produkcyjny) to, oprócz kopiowania kodu i bazy, przenoszenie multimediów, które nie zawsze jest miłe i przyjemne.
Dlatego od jakiegoś czasu chodzi mi po głowie pewna koncepcja, która ten problem mogłaby rozwiązać.
Otóż pliki binarne, podczas uploadu należało by jednak zapisać w bazie. Do tego należałoby opracować komponent, który w przypadku żądania obrazka o id = 1 sprawdziłby odpowiedni katalog i po znalezieniu go - zwrócił jako odpowiedź. Z kolei przy jego braku w systemie plików - utworzył takowy na podstawie danych w bazie i w standardowy sposób zwrócił plik jako odpowiedź.
Świetnie by się do tego nadawały cake'owe behaviors. Do tego można by go sprząc z jeszcze jedną funkcjonalnością- plik mógłby być w bazie zapisywany (w razie podmiany zawartości) za każdym razem pod inną nazwą (np. id_kolejny_numer_wersji). Dzięki temu możnaby tym plikom ustawić nagłówki Expire z odległą przyszłością i korzystać z dobrodziejstw bufora przeglądarek...
Uwaga, blog przeniesiony
Posty na tym blogu już nie będą się pojawiać. Zapraszam gorąco pod nowy adres:
blog.grzegorzpawlik.com
Subskrybuj ten blog...
poniedziałek, 6 października 2008
Subskrybuj:
Komentarze do posta (Atom)
Uwaga! blog przeniesiony
Posty na tym blogu już nie będą się pojawiać. Zapraszam gorąco pod nowy adres:
blog.grzegorzpawlik.com
Komentowanie artykułów możliwe jest pod nowym adresem.
2 komentarze:
A chciałby Pan jes zapisywać w bazie jako BLOB czy jakoś inaczej?
Mysql nie pozostawia zbyt wielkiego wyboru, zatem tak - BLOB, lub jakaś jego dłuższa wersja w razie gdyby 64 kilo okazało się zbyt krótkie ;)
Kiedyś na KGD.NET była świetna prelekcja o MSSQL (2007, albo 8), niestety nie pamiętam czyja. Usłyszałem tam o ciekawym rozwiązaniu - silnik bazy może zapisywać BLOBy jako pliki. Z tym, że odbywa się to niejawnie. Plusy tego są takie, że dostęp jest szybki jak w przypadku zapisywania BLOBów w plikach, ale nie zajmujemy się tym osobiście. Robi to za nas DBMS. Dlatego robiąc eksport nie ma obawy, że coś zgubimy. Ciekawe czy w mySQL można czegoś takiego oczekiwać?
Prześlij komentarz