Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: inna funkcja niż readfile
Forum PHP.pl > Forum > PHP
tomaszh
czy istnieje inna podobna w działaniu funkcja niż readfile? Niestety na serwerze została zablokowana przez administratora więc nie mogę jej używać. Chodzi o zwyczajny odczyt(ściąganie) plików z serwera. Podaje poniżej kod z readfile.
  1. <?php
  2. $file_extension=strtolower(substr(strrchr($file,"."),1));
  3. switch($file_extension) {
  4. case "pdf": $ctype="application/pdf"; break;
  5. case "zip": $ctype="application/zip"; break;
  6. case "doc": $ctype="application/msword"; break;
  7. case "xls": $ctype="application/vnd.ms-excel"; break;
  8. default: $ctype="application/force-download";
  9. }
  10. header("Pragma: public");
  11. header("Content-disposition: attachment; filename=".basename($file));
  12. header("Content-type: ".$ctype."n");
  13. header("Content-Transfer-Encoding: binary");
  14. header("Content-Length: ".filesize($file));
  15. header("Content-Length: ".filesize($file));
  16. header("Pragma: no-cache");
  17. header("Expires: 0");
  18. readfile($file);
  19. ?>
wipo
możesz sprobowac fopen()
tomaszh
mógłbyś napisać jak to zrobić. Nie używałem jeszcze tej funkcji do ściągania plików. Używałem tylko do odczytu.
wipo
Kod

$plik=fopen("nazwa_pliku_lub_sciezka","r+");
while(!feof($plik)){
    $calosc.=fgets($plik,4096);
}
fclose($plik);

W zmiennej $calosc masz zawartość pliku
tomaszh
chyba mnie nie rozumiesz, nie chodzi mi o odczyt pliku i wyświetlenie go ale o możliwość pobrania z serwisu, tak jak to się dzieje w przypadku poleceń nagłówka i funkcji readfile().
matipl
no to dodaj do kodu @wipo na koniec:
  1. <?php
  2. echo $calosc;
  3. ?>

i po sprawie
tomaszh
powtarzam że nie chodzi mi o wyświetlenie zawartości pliku(polecenie echo), tylko o możliwość pobrania pliku przez użytkownika, tak jak to się odbywało poprzez odpowiednie wysłanie informacji nagłówka i pobranie pliku poprzez readfile(). Niestety readfile nie mogę używać, czy istnieje inny sposób na pobranie pliku z serwera poprzez użytkownika?
nospor
Cytat
powtarzam że nie chodzi mi o wyświetlenie zawartości pliku(polecenie echo)

Ty po prostu nie rozumiesz jak to sie odbywa.
readfile() pobiera plik i wyswietla go na "ekran". Tylko ze jesli wczesniej wyslesz odpowiednie naglowki, to nie zostanie to wyswietlone, a wyslane do pobrania. Takze readfile() mozna zastapic kazda funkcja, ktora pobiera zawartosc pliku i dac potem echo. Ale tzreba pamietac by podac naglowki odpowiednie, cos jak takie co masz w pierwszym skrypcie
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.