Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z pobieraniem pliku
Forum PHP.pl > Forum > PHP
tomekn
Witam
Mam mniej więcej taki układ katalogów

\www\system\cms\ - tu znajduje się mój CMS jako wydzielony katalog wirtualny w apache
\www\system\stronka\ - tu znajduje się stronka zarządzana z cms-a również jako wydzielony katalog wirtualny w apache
\www\system\upload\ - tu znajdują się pliki jakie można dodać z poziomu CMS i pobrać ze stronka. Folder ten zawiera podfoldery np. rozklad_jazdy, plan_jazdy


W stronka mam zrobione wyświetlanie plików w postaci:

  1. <a href=liczplik.php?lid=".$tab['sciezka_pliku']."/".$tab['nazwa_pliku']."&amp;pid=".$tab['nazwa_pliku'].">".date("Y-m-d", filemtime($tab['sciezka_pliku'].'/'.$tab['nazwa_pliku']))."</a></td>


Dodatkowo zliczam sobie pobieranie plików w pliku liczplik.php który ma taka zawartość:

  1. $lid = $_GET['lid'];
  2. $pid = $_GET['pid'];
  3.  
  4. mysql_select_db($nbaza, $connect);
  5. $query_select = "SELECT pobran FROM pliki WHERE nazwa_pliku = '$pid'";
  6. $result = mysql_query($query_select, $connect);
  7. $tab = mysql_fetch_array($result);
  8. $pobrano = $tab['pobran']+1;
  9. mysql_query("UPDATE pliki SET pobran = '$pobrano' WHERE nazwa_pliku = '$pid'");
  10. Header("Location: $lid");


Gdzie:
$tab['sciezka_pliku'] to wartość pobrana z bazy = ../upload/rozklad_jazdy
$tab['nazwa_pliku'] to wartość pobrana z bazy = Linia5.xls

I co ciekawe jak widać w powyższym kodzie za pomocą date wyświetlam datę aktualizacji pliku jak nazwę linku i to działa bez problemu (sprawdzałem jeśli usunę plik z folderu upload/rozklad_jazdy/Linia5.xls to data nie jest wyświetlana więc się tam dostaje).

Problem polega na tym że plik Lini5.xls nie jest pobierany po kliknięciu na link. sciana.gif

Przeglądarka zwraca że link jest uszkodzony.
Dzięki za wszystkie uwagi i sugestie .
whiteDancer
  1. <?php
  2.  
  3. $path = "place/".$lid = $_GET['lid'];
  4.  
  5. //[...]
  6. mysql_select_db($nbaza, $connect);
  7. $query_select = "SELECT pobran FROM pliki WHERE nazwa_pliku = '$pid'";
  8. $tab = mysql_fetch_array(mysql_query($query_select, $connect), MYSQL_ASSOC);
  9. $pobrano = $tab['pobran']+1;
  10. mysql_query("UPDATE pliki SET pobran = '$pobrano' WHERE nazwa_pliku = '$pid'");
  11.  
  12. if((!isset($path)) or ($path==''))
  13. {
  14. header('HTTP/1.1 500 Internal Server Error');
  15. exit();
  16. }
  17. elseif(!file_exists($path))
  18. {
  19. header('HTTP/1.1 404 File Not Found');
  20. exit();
  21. }
  22. else
  23. {
  24. $fileinfo = array();
  25. $fileinfo['name'] = basename($path);
  26. //$fileinfo['ext'] = strtolower(substr(strrchr($fileinfo['name'],"."),1));
  27. $fileinfo['size'] = sprintf("%u", filesize($path));
  28. $fileinfo['time'] = filemtime($path);
  29. $fileinfo['type'] = 'application/force-download';
  30.  
  31. header('HTTP/1.1 200 OK');
  32. header('Pragma: public');
  33. header('Expires: 0');
  34. header('Last-Modified: '.gmdate('D, d M Y H:i:s', $fileinfo['time']).' GMT');
  35. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  36. header('Cache-Control: private',false);
  37. header('Content-Description: File Transfer');
  38. header('Content-Disposition: attachment; filename="'.$fileinfo['name'].'";' );
  39. header('Content-Transfer-Encoding: binary');
  40. header('Content-Type: '.$fileinfo['type']);
  41. header('Content-Length: '.$fileinfo['size']);
  42. readfile($path);
  43. exit();
  44. }
  45. ?>
tomekn
Zaczyna się coś dziać tylko w zawartości pobranego pliku widzę sieczkę zamiast czytelnych danych.
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.