![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 2.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Napisałem system upload oparty na bazie MySQL (aby zachować bezpieczeństwo plików).
Skrypt bezbłędnie dodaje do bazy (i pozwala ściągać) wszystkie pliki graficzne, jednak, gdy dodam do bazy plik *.zip, *.rar, *.ace jego ściągnięcie jest niemożliwe. Baza widzi wszystkie mniej "standardowe" pliki jako typ : application/octet-stream, co powoduje (jak mi się wydaje) nadpisanie złego nagłówka i de facto ściągnięcie pliku tekstowego (choć w rzeczywistości jest to np. .ace) . Czy możliwy jest download tych "niestandardowych" plików z bazy MySQL ? Dlaczego PHP rozpoznaje typ tych plików zawsze jako "application/octet-stream" ? Gdzie może być błąd ? Skrypt UPLOAD :
Skrypt DOWNLOAD :
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego PHP rozpoznaje typ tych plików zawsze jako "application/octet-stream" ? Zacznijmy od tego, że Ty nigdzie nie sprawdzasz tego typu.Ślepo ufasz przeglądarce a one cząsto kłamią lub się mylą. Inforacja o typie pliku przesyłana w tablicy $_FILES jest czasem tym co się przeglądarce wydaje. A poza tym jest określany na podstawie rozszerzenia. Jeśli chcesz zapisać do bazy (a potem odczytać) prawdziwy typ pliku skorzystaj z mime_content_type() Sam nagłówek Content-Type nie wystarczy. Użyj: (...) To zły przykład.Powinno być: a nie:
No i na koniec: Jaki to ma wszystko związek z bazami danych? Przecież ten wątek powinien być na PHP lub na Przedszkolu. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 2.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki !
Rozwiązanie mike_mech działa bez zarzutu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:44 |