![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
czy w systemach z uploadowaniem plików lepiej jest zapisywać typ mime pliku obok nazwy w bazie czy wystarczy zapisać jego nazwę? Jak ciężka jest operacja sprawdzania typu pliku? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat lepiej jest zapisywać typ mime pliku obok nazwy w bazie czy wystarczy zapisać jego nazwę? - najlepiej jest zapisywać wszystkie przydatne informacje, które deklaruje użytkownik wysyłając plik a w szczególności nazwę, typ pliku, rozszerzenie i wszystko to co jest niezbędne podczas wysyłania pliku z powrotem do użytkownika lub jest w jakiś sposób przydatne dla nas. Jest to potrzebne po to, że gdy komuś uda się przemycić plik .php deklarując jego typ jako .png to gdy spróbuje go pobrać to mu go wysyłasz jako .png (najlepiej jeszcze pod nazwą jaką go wysłał) i masz go gdzieś.Cytat Jak ciężka jest operacja sprawdzania typu pliku? - na tyle ciężka, że "w locie" lepiej tego nie robić. Crozin dobrze pisze, chociaż sam dostęp do plików jest szybki to operacje na nich są bardziej skomplikowane i zasobożerne niż na bazie.Najlepiej jest robić tak: 1. Odbieramy plik od użytkownika i wstępnie go walidujemy (deklarowany typ MIME, rozmiar itp.) 2. Tworzymy rekord w bazie danych 3. Zapisujemy plik w docelowej lokalizacji pod nazwą = ID w bazie (wygoda i szybkość), jednak POZA http (czyli powyżej katalogu public tak, że gdy ktoś wpisze adres do pliku typu http://strona.pl/folder/plik.jpg to pomimo poprawnej ścieżki nic się nie stanie) 4. Walidujemy plik dokładniej sprawdzając go na dysku, używamy np: http://www.php.net/manual/pl/function.finfo-file.php 5. Jeśli wszystko OK to zapisujemy w bazie informacje o pliku 6. Jeśli użytkownik chce zassać plik to pobieramy go i mu wysyłamy z odpowiednimi nagłówkami, które generujemy na podstawie informacji zapisanych w bazie |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 12:42 |