Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z pobieraniem pliku
tomekn
post 12.12.2009, 17:13:03
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 11.08.2004

Ostrzeżenie: (0%)
-----


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 .


--------------------
Tomekn
tomekn@onet.pl
Go to the top of the page
+Quote Post
whiteDancer
post 12.12.2009, 19:18:49
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 12.12.2009

Ostrzeżenie: (0%)
-----


  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. ?>


--------------------
Wspieram:
dotnetomaniak.pl && eathena.ws
Go to the top of the page
+Quote Post
tomekn
post 13.12.2009, 18:43:57
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 11.08.2004

Ostrzeżenie: (0%)
-----


Zaczyna się coś dziać tylko w zawartości pobranego pliku widzę sieczkę zamiast czytelnych danych.


--------------------
Tomekn
tomekn@onet.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 22:36