Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: download
Forum PHP.pl > Forum > Przedszkole
siutek
jak sprawic aby przy wejsciu na strone ze skryptem php (ktory zapisuje kazde wejscie do bazy) wymusic pobieranie danego pliku?? poprzez szukajke znalazlem posta w ktorym byla mowa o header("Content-Disposition: attachment; filename=plik.wav"), jednak u mnie sie on nie sprawdza... pliki sa pobierane, ale za kazdym razem po pobraniu waza ok 144 - 177KB, a powinny ok 230 - 300KB - dzwonki wav na komorke. no i nie chca sie otworzyc, u mine nie dzieje sie zupelnie nic, a u kumpla wyrzuca komunikat "blad typu pliku" przy odpaleniu

skrypt:

  1. <?php
  2.  
  3. if ($_GET['wav'] == "zwonieni") {
  4.  
  5.  header("Content-Disposition: attachment; filename=zveneni1.wav");
  6.  $query="INSERT INTO dzwonki (dzwonekID,ip,remote_host,data) VALUES ('10001','".$_SERVER['REMOTE_ADDR']."','".$_SERVER['REMOTE_HOST']."', '".date('Y-m-d H:i:s')."')";
  7.  mysql_query($query);
  8.  echo "<center>Niebawem ta stronka przybierze na grafice, a tymczasem wyglada jak wyglada tongue.gif Miłego sciągania dzwonków.<center><br><br><br>";
  9.  echo "pobierasz wlasnie dzwonek <b>zvoneni1.wav</b>";
  10.  
  11. } elseif ($_GET['wav'] == "meatloaf"){
  12.  
  13.  header("Content-Disposition: attachment; filename=mitlofe1.wav");
  14.  $query="INSERT INTO dzwonki (dzwonekID,ip,remote_host,data) VALUES ('10002','".$_SERVER['REMOTE_ADDR']."','".$_SERVER['REMOTE_HOST']."', '".date('Y-m-d H:i:s')."')";
  15.  mysql_query($query);
  16.  echo "<center>Niebawem ta stronka przybierze na grafice, a tymczasem wyglada jak wyglada tongue.gif Miłego sciągania dzwonków.<center><br><br><br>";
  17.  echo "pobierasz wlasnie dzwonek <b>mitlofe1.wav</b>";
  18.  
  19. } elseif ($_GET['wav'] == "animals"){
  20.  
  21.  header("Content-Disposition: attachment; filename=animals2.wav");
  22.  $query="INSERT INTO dzwonki (dzwonekID,ip,remote_host,data) VALUES ('10003','".$_SERVER['REMOTE_ADDR']."','".$_SERVER['REMOTE_HOST']."', '".date('Y-m-d H:i:s')."')";
  23.  mysql_query($query);
  24.  echo "<center>Niebawem ta stronka przybierze na grafice, a tymczasem wyglada jak wyglada tongue.gif Miłego sciągania dzwonków.<center><br><br><br>";
  25.  echo "pobierasz wlasnie dzwonek <b>mitlofe1.wav</b>";
  26.  
  27. }
  28. ?>
matipl
O ile się nie mylę header("Content-Disposition: attachment; filename=plik.wav") powinno być umieszczone w osobnym pliku php, do ktorego w Twoim wybieraczu "if" bylby tylko link...
O tym o czym mowisz...Czyli wchodzimi na strone, pokazuje nam sie Twoj napis "Niebawem ta stronka przybierze na grafice", i po chwili zaczyna sciagac, sa 2 rozwiazania:
a) po kilku sekundach zaczyna sie sciagac poprzez skrypt JavaScript
cool.gif robisz w HTML-u np. "meta name" z opcja REFRESH 5 sekund z linkiem do wlasciwego pliku WAVE
kszychu
W zasadzie ten Twój skrypt jest OK. Zauważ jednak, że wysyłasz użytkownikowi same nagłówki, a gdzie plik? Musisz wysłać odpowiedni plik.
siutek
krzychu moj skrypt nie jest ok, pominalem fakt ze kod html ktory jest tam wpisany nie pojawia sie wcale, ale w tej chwili jest to najmniej istotne, zalezy mi na przeslaniu calego pliku. jaka funkcja to realizuje?

bede musial chyba jednak pokombinowac z JS, juz sie boje bo nie znam tego jezyka wcale :/
crash
Jak na mój gust to po wysłaniu odpowiednich nagłówków wysłanie pliku można zrealizować za pomocą funkcji echo()...
siutek
yyy, echo()questionmark.gif tu mnie zaskoczyles...

tzn wewnatrz nawiasow powinienem wstawic sciezke do plikow?
myslalem ze echo() sluzy do wyswietlania stringu i liczb
crash
A czym że innym są dane z pliku jak nie stringiem?
siutek
mimo wszystko nie rozumiem, echo nie pomogolo, tak jak przewidywalem sciezke wyswietla na ekranie... :/
nospor
ale ty w echo miales podac zawartosc pliku a nie scieżkę do niego smile.gif
mozesz uzyc readfile, ktore wczytuje plik i od razy wywala go na ekran:
http://pl.php.net/manual/pl/function.readfile.php
siutek
yyy, nospor, spojz na gore tongue.gif chodzi o plik wav tongue.gif aby go sciagnac na kompa, a nie wyswietlic na stronie www
nospor
yyyy, siutek - patrzylem tongue.gif

tak sie wlasnie robi. zeby komus dac download, musisz przekazac mu całą tresc pliku do sciągniecia. Poprzedzone to odpowiednimi naglowkami, spowoduje, ze plik sie bedzie sciągal, a nie wyswietlal na stronie jako tekst smile.gif
siutek
nospor, w takim razie sorry tongue.gif

ale mimo wszystko nadal stoje w miejscu, obecny wyglad skryptu:

  1. <?php
  2.  
  3.  header("Content-Disposition: attachment; filename=mitlofe1.wav");
  4.  header("Content-Transfer-Encoding: binary");
  5.  $plik1 = fopen('./mitlofe1.wav');
  6.  $plik = readfile($plik1);
  7.  echo $plik;
  8.  
  9. ?>


nie moge zalapac o co Wam chodzi, chyba poraz pierwszy tongue.gif
nospor
podalem ci linka do manuala. podaje jeszcze raz:
http://pl.php.net/manual/pl/function.readfile.php

przyjrzyj sie skladni, argumentom funkcji, przykladowym kodom ponizej.
bo ten kod co pokazales to lipa...
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.