Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Skrypt pobieranie pliku z serwera
Forum PHP.pl > Forum > Przedszkole
klima06
Witam!
Mam skrypt, gdzie użytkownik zalogowany po kliknięciu w link może pobrać dla niego dostępny plik.
W przeglądarce wchodząc w link wyświetla się strona z FireFox'a "Nie odnaleziono pliku", zaś po kliknięciu prawy > zapisz jako, plik jest poprawnie zapisany i potem bez problemu można go otworzyć.

Kawalek skryptu:
  1. $fullPath = 'files/order_1.pdf';
  2. $fsize = filesize($fullPath);
  3. header("Content-type: application/pdf");
  4. header("Content-Disposition: attachment; filename=order_1.pdf");
  5. header("Content-Length: $fsize");
  6. @readfile($fullPath);


rocktech.pl
Witam.

Spróbuj obiektowo ...

  1. $file = new SplFileObject('files/order_1.pdf', "rb");
  2.  
  3. //Content-Type nie Content-type to ważne
  4. header("Content-Type: application/pdf");
  5. header("Content-Disposition: attachment; filename=" . $file->getBasename());
  6. header("Content-Length: " . $file->getSize());
  7.  
  8. $file->fpassthru();
klima06
Niestety dalej to samo, może wina leży po stronie .htaccess, albo serwera OVH ?
  1. Options -Indexes
  2. RewriteEngine On
  3. RewriteBase /
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6. RewriteRule ^(.*)$ index.php/$1 [L]


@edit
Dodam, że na XAMPP'ie na localhost'cie działa wszystko ok, tylko na OVH jest z tym problem.
rocktech.pl
A pokaż jak budujesz link? Spróbuj dać bezwzględną ścieżkę do pliku.
klima06
To jest mój index.php, do którego wszystkie wywołania są przekierowane i on ładuje odpowiednie klasy, metody ze zmiennymi:
  1. $url = $_SERVER['REQUEST_URI'];
  2. $array_tmp_url = preg_split('[\\/]', $url, -1, PREG_SPLIT_NO_EMPTY);
  3. $array_url['controller'] = '';
  4. $array_url['method'] = '';
  5. $array_url['var'] = '';
  6. if(isset($array_tmp_url[0]))
  7. $array_url['controller'] = $array_tmp_url[0];
  8. if(isset($array_tmp_url[1]))
  9. $array_url['method'] = $array_tmp_url[1];
  10. if(isset($array_tmp_url[2]))
  11. $array_url['var'] = $array_tmp_url[2];


Zmiana ścieżki również nie pomaga.

@edit
Chyba jedyne wyjście to nie trzymanie się MVC w tym przypadku i zrobić sobie plik .php, który to wszystko obsłuży i sprawdzi, bo w tym wypadku mi to działa.
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.