Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Dodawanie plików MP3 do bazy danych
Forum PHP.pl > Forum > Przedszkole
Stypula
Witam. Dziś wpadłem na kolejny pomysł podszlifowania swoich umiejętności programisty PHP z wykorzytstaniem MySQL. Chodzi mi o serwis który umożliwiałby wrzucanie swoich plików mp3/jpg/avi do mojej bazy danych. Wrzucanie zdjęć działa nienagannie jednak gdy próbuję wrzucić mp3 mysql_error wyrzuca mi że
  1. MySQL server has gone away
;\. Co z tym zrobić?
Formularz:
  1. <FORM ACTION="upload.php" METHOD="POST" ENCTYPE="multipart/form-data">
  2. Utwór: </td><td><INPUT type="file" name="utwor">
  3. Wykonawca: </td><td><INPUT type="text" name="wykonawca">
  4. Tytuł: </td><td><INPUT type="text" name="tytul">
  5. <input type="submit" name="ok" value="Wyślij utwór do bazy"/>
  6. </FORM>

Upload.php:
  1. <?
  2.        require_once("db");
  3.        $fhandle = fopen($_FILES['utwor']['tmp_name'], "r");
  4.        $content = fread($fhandle, $_FILES['utwor']['size']);
  5.        fclose($fhandle);
  6.        $str=rand(0, 100000);
  7.        $date=date('Y/m/d H:i:s');
  8.        $str=$date.$str;
  9.        $adres=md5($str);
  10.       $zapytanie = mysql_query("INSERT INTO utwory set `piosenka`='$content', `adres`='$adres', `tytul`='$tytul', `wykonawca`='$wykonawca'");
  11. if($zapytanie){
  12.        $adres = substr($adres,0,8);
  13.        $host  = $_SERVER['HTTP_HOST'];
  14. $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/');
  15. $extra = 'odtworz.php?id=;
  16.        $adres = "http://$host$uri/$extra".$adres;
  17.        echo "Twoja piosenka ortrzymała adres: <br/>".$adres;
  18.        }else{ echo mysql_error();}
  19. ?>

I jeszcze bym prosił o info czy można sprawdzać rozszerzenie pliku za pomocą explode? (koniec wyrazu równoznaczynyby był z kropeczką) Czy jest do tego jakaś efektywniejsza funkcja? Z góry dzięki.
W bazie danych `piosenka` to longblob.
erix
A nie możesz zapisywać pliku mp3 w osobnym katalogu o nazwie z ID w bazie...? SQL nie jest raczej do przechowywania plików...

Ten komunikat mogło wywalić, bo próbujesz wysłać zapytanie większe niż max packet size ustawiony w konfiguracji.
piotrooo89
jak napisał erix to raczej nie zadziała. możesz wrzucać na serwer pliki a w bazie mieć do nich ścieżki innej opcji nie widzę.
Stypula
Ok. Dzięki za pomoc. Swoją drogą troszkę jest to dziwne gdyż czasem wywala mi
  1. MySQL server has gone away
czasem
  1. Got a packet bigger than 'max_allowed_packet' bytes
a jeżeli plik jest mały (~500 kb) to go dodaje... To będę próbował dalej ;].
erix
Masz ewidentnie za dużo danych jednorazowo.

Rób tak, jak większość sprawdzonym rozwiązaniem, a nie kombinujesz ze SQL, która nie jest do składowania plików...
piotrooo89
co się stanie gdy w bazie będziesz miał z 50 mp3, 100 zdjęcie i 10 filmików? klęknie Ci to od razu, chyba że masz bazę z 10gb to co innego choć po pewnym czasie i ona się napełni.
Stypula
Ok dzięki. Już zrobiłem ;].
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.