Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ftp_get/header
Forum PHP.pl > Forum > PHP
devuriel
Mam sobie metodę:

  1. <?php
  2. public function getFile($fileName) {
  3. if ($this->ftpGet=ftp_get($this->conn, $fileName, $fileName, FTP_ASCII)){
  4.    header('Content-Length: '.filesize($fileName));
  5.    header('Content-Type: application/octet-stream');
  6.    header('Content-Disposition: attachment; filename="'.basename($fileName).'"');
  7.    header('Content-Transfer-Encoding: binary');
  8.    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  9.    readfile($fileName); // send the file
  10.    exit;  
  11. }
  12.    if ($this->ftpGet)
  13.      return 1;
  14.    else
  15.     return 0;
  16. }
  17. ?>

wywołaną przez:

  1. <?php
  2. <a href=&#092;"file.php?getfile=".$dir.$this->plik['name']."\">".$this->plik['name']."</a>
  3. ?>


  1. <?php
  2. if(!empty($_GET['getfile'])) $ftp->getFile($_GET['getfile']);
  3. ?>


ftp_get zaciąga plik ładnie z serwera, dając możliwość wybrania ścieżki zapisu przez użytkownika (dzięki header()). Ale dołącza do ściągniętego pliku cały template strony. Czyli wszystkie tagi,style,skrypty. Pytanie następujące co zrobiłem źle:-)? Jesteście w stanie to ocenić po tak skąpych informacjach? Może jakieś wskazówki gdzie szukać błędu?
nospor
No jesli przed tym kodem:
if(!empty($_GET['getfile'])) $ftp->getFile($_GET['getfile']);

generujesz jeszcze swoją strone, to nic dziwnego ze ci sie dołącza smile.gif
devuriel
Dokładnie przed tym kodem geruje stronę:-)
Nie chciał bym jednak zmieniać tej konstrukcji dlatego kolejne pytanie brzmi jak zmusić perser aby nie brał pod uwagę znaczników poza?
nospor
Cytat
Nie chciał bym jednak zmieniać tej konstrukcji
WYpadaloby zmienic. Predzej czy później musisz zaczac poprawnie pisac:
najpierw generujesz dane, potem generujesz strone na podstawie danych

Cytat
jak zmusić perser aby nie brał pod uwagę znaczników poza
No to pozostaje ci buforowanie. Funkcje z rodziny ob_....
ob_start(), ob_clear czy jakos tak. poczytaj w manualu
Fifi209
Cytat(devuriel @ 17.07.2009, 11:17:18 ) *
Dokładnie przed tym kodem geruje stronę:-)
Nie chciał bym jednak zmieniać tej konstrukcji dlatego kolejne pytanie brzmi jak zmusić perser aby nie brał pod uwagę znaczników poza?


Poza czego?
Jak chcesz zatrzymać skrypt to dajesz exit;
devuriel
Cytat(nospor @ 17.07.2009, 12:19:53 ) *
WYpadaloby zmienic. Predzej czy później musisz zaczac poprawnie pisac:
najpierw generujesz dane, potem generujesz strone na podstawie danych

No to pozostaje ci buforowanie. Funkcje z rodziny ob_....
ob_start(), ob_clear czy jakos tak. poczytaj w manualu


Oczywiście próby z ob_ wykonałem również w php.ini, niestety się nie powiodło. Stąd moja obecność tu.
Zasadniczo mam źle skonstruowaną klasę - podebrana z internetu generuje ona dane i przetwarza. Czyli kogiel mogiel.
Można powiedzieć, że sam strzeliłem sobie gola.

--EDIT 15:02
Cytat(nospor @ 17.07.2009, 12:19:53 ) *
WYpadaloby zmienic. Predzej czy później musisz zaczac poprawnie pisac:


Te słowa były dla mnie kluczowe :-)
W 3h przepisałem klasę jak bozia przekazała (bynajmniej tak mi się wydaje) i działa zgrabnie i co najważniejsze porpawnie. Czas się nauczyć PORZĄDNIE OBIEKTOWO pisać:)

Jeszcze jedno pytanko odnośnie progresbarów. Czy da się z poziomu PHP odpytywać serwer o postępie i wrzucić do ładnie w ajaxa? Może jakieś gotowe klasy ktoś posiada?
erix
W PHP się nie da. Był gdzieś skrypt w Perlu do tego.

Ostatecznie SWFUpload.
devurien
Cytat(erix @ 17.07.2009, 17:21:45 ) *
W PHP się nie da. Był gdzieś skrypt w Perlu do tego.

Ostatecznie SWFUpload.


Dzięki za odp:)
Osobiście nie lubię flasha - dlatego to rozwiązanie odpada.
Perl? Jak najbardziej, może znasz nazwę? Aby oszczędzić mi przekopywania stert stron. Wybacz za śmiałość.
erix
http://pl.lmgtfy.com/?q=perl+progress+upload

wybacz za odpowiedź.
devurien
Skoro znasz nazwę skryptu po cóż mnie tam odsyłasz ?

Jeszcze młody wać Pan jest można wybaczyć. W przyszłości w pracy też wyślesz kogoś do google? Jeśli tak to gwarantuje Ci wzmożoną aktywność podczas drzwiach otwartych w Rejonowym Zakładzie pracy ;-)
Dlatego czasem zamiast zgrywać się i podsyłać bezwartościowe linki zmierz się z funkcją jaką zajmujesz. Albo sobie odpuść.
EOT.
Kildyt
Cytat(devurien @ 17.07.2009, 20:22:34 ) *
Skoro znasz nazwę skryptu po cóż mnie tam odsyłasz ?

Jeszcze młody wać Pan jest można wybaczyć. W przyszłości w pracy też wyślesz kogoś do google? Jeśli tak to gwarantuje Ci wzmożoną aktywność podczas drzwiach otwartych w Rejonowym Zakładzie pracy ;-)
Dlatego czasem zamiast zgrywać się i podsyłać bezwartościowe linki zmierz się z funkcją jaką zajmujesz. Albo sobie odpuść.
EOT.
Robi się gorąco. Muszę jednak powiedzieć, że erix ma rację. Jak ktoś płaci to i wymaga, a na forum pomagamy z dobroci serca więc chcemy aby użytkownicy byli jak najbardziej samodzielni. Gdyby erix miałby wszystkim pisać wszystko jak dla przedszkolaka to miałby tysiące próśb na PW, siwe (a może i powyrywane) włosy i nerwicę. tongue.gif

Co do postanowienia to trzymam kciuki. Najważniejsze to nie odwalać syfu.
Popieram decyzję w sprawie flasha. Moim zdaniem należy go unikać w sytuacjach gdy efekt możemy uzyskać innymi metodami (oczywiście w granicach zdrowego rozsądku).

PS Do kodu Bozi nam jeszcze hoho. W tym życiu tego poziomu nie osiągniemy. winksmiley.jpg
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.