Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]zamiast okienka pobieraniania czyta plik odrazu
gigzorr
post
Post #1





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


Witam.Mam taki problem , jak klikam na pobierz to zamiast okienka do pobierania odrazu mi sie wyswietla.
Oto kod:
  1. <?php
  2. if (isset($row['plik']) && !empty($row['plik'])) {
  3. $sFileName = str_replace('..','.',$row['plik']);
  4. if (file_exists('upload/'.$sFileName)) {
  5. $path = "cms/"; // change the path to fit your websites document structure
  6. $fullPath = $path.$sFileName;
  7. if ($fd = fopen ($fullPath, "r")) {
  8. $fsize = filesize($fullPath);
  9. $path_parts = pathinfo($fullPath);
  10. $ext = strtolower($path_parts["extension"]);
  11. header("Content-type: application/octet-stream");
  12. header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
  13. header("Content-length: $fsize");
  14. header("Cache-control: private"); //use this to open files directly
  15. while(!feof($fd)) {
  16. $buffer = fread($fd, 2048);
  17. echo $buffer;
  18. }
  19. }
  20. fclose ($fd);
  21. }
  22. }
  23. // laczenie z baza danych
  24. require("pliki/laczenie.php");
  25.  
  26. // zapytanie pobierajace dane z bazy danych
  27. $zapytanie = mysql_query("SELECT id,opis,plik,rozmiar,ilosc_pobran FROM pliki") or die(mysql_error());
  28.  
  29. while ($row = mysql_fetch_array($zapytanie, MYSQL_ASSOC))
  30. {
  31. printf ("ID: %s<br/>
  32. Opis: %s<br/>
  33. Plik: %s<br/>
  34. Rozmiar: %s kb<br/>
  35. Ilość pobrań: %s
  36. <br/>
  37. <a href='upload/$row[plik]'>Pobierz</a>
  38. ", $row[id], $row[opis],$row[plik],$row[rozmiar],$row[ilosc_pobran]);
  39. echo '<hr/>';
  40. }
  41.  
  42. mysql_free_result($zapytanie);
  43.  
  44. // zamykanie polaczenie
  45. ?>


Ten post edytował gigzorr 4.07.2010, 11:21:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


i tak już chyba zostanie - to wina samej przeglądarki.
Go to the top of the page
+Quote Post
Nh2003
post
Post #3





Grupa: Zarejestrowani
Postów: 81
Pomógł: 14
Dołączył: 3.10.2007

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


Cytat(fifi209 @ 4.07.2010, 12:30:18 ) *
i tak już chyba zostanie - to wina samej przeglądarki.

A nie tego ze link jest robiony bezposrednio do pliku zamiast do skryptu pobierajacego? I do tego trzeba dolozyc ze sprawdzana jest zmienna $row, ktora jest tworzona dopiero w 30 linii...
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Nh2003 @ 4.07.2010, 12:44:41 ) *
A nie tego ze link jest robiony bezposrednio do pliku zamiast do skryptu pobierajacego? I do tego trzeba dolozyc ze sprawdzana jest zmienna $row, ktora jest tworzona dopiero w 30 linii...

Jakoś zwróciłem uwagę na sam początek skryptu - mam na myśli force download. ;p
Go to the top of the page
+Quote Post
gigzorr
post
Post #5





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


  1. <?php
  2. if (isset($row['plik']) && !empty($row['plik'])) {
  3. $sFileName = str_replace('..','.',$row['plik']);
  4. if (file_exists('upload/'.$sFileName)) {
  5. $path = "cms/"; // change the path to fit your websites document structure
  6. $fullPath = $path.$sFileName;
  7. if ($fd = fopen ($fullPath, "r")) {
  8. $fsize = filesize($fullPath);
  9. $path_parts = pathinfo($fullPath);
  10. $ext = strtolower($path_parts["extension"]);
  11. header("Content-type: application/octet-stream");
  12. header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
  13. header("Content-length: $fsize");
  14. header("Cache-control: private"); //use this to open files directly
  15. while(!feof($fd)) {
  16. $buffer = fread($fd, 2048);
  17. echo $buffer;
  18. }
  19. }
  20. fclose ($fd);
  21. }}
  22.  
  23.  
  24.  
  25. // laczenie z baza danych
  26. require("pliki/laczenie.php");
  27.  
  28. // zapytanie pobierajace dane z bazy danych
  29. $zapytanie = mysql_query("SELECT id,opis,plik,rozmiar,ilosc_pobran FROM pliki") or die(mysql_error());
  30.  
  31. while ($row = mysql_fetch_array($zapytanie, MYSQL_ASSOC))
  32. {
  33.  
  34.  
  35.  
  36. printf ("ID: %s<br/>
  37. Opis: %s<br/>
  38. Plik: %s<br/>
  39. Rozmiar: %s kb<br/>
  40. Ilość pobrań: %s
  41. <br/>
  42. <a href='listaplikow.php?$row[plik]'>Pobierz</a>
  43. ", $row[id], $row[opis],$row[plik],$row[rozmiar],$row[ilosc_pobran]);
  44. echo '<hr/>';
  45. }
  46.  
  47. mysql_free_result($zapytanie);
  48.  
  49. // zamykanie polaczenie
  50.  
  51. ?>


Teraz tak wyglada , ale wogole nie czyta tego kawalku kodu na samej gorze , bo jak klikam pobierz to fail .
Jeszcze probowalem stawic ten kawalek kodu z poczatku po linii 32 ale mam bledy , ze musi byc na poczatku.

Tutaj kolejna wersja nie dzialajaca , tu juz probowalem zrobic , zeby pliki byly w glownym ale i tak fail.
  1. <?php
  2.  
  3. // laczenie z baza danych
  4. require("pliki/laczenie.php");
  5. if (isset($_GET['plik']) && !empty($_GET['plik'])) {
  6. $sFileName = str_replace('..','.',$_GET['plik']);
  7. $sFolder = './';
  8.  
  9. if (file_exists($sFolder.$sFileName)) {
  10. $fullPath = $sFolder.$sFileName;
  11. if ($fd = fopen ($fullPath, "r")) {
  12. $fsize = filesize($fullPath);
  13. $path_parts = pathinfo($fullPath);
  14. $ext = strtolower($path_parts["extension"]);
  15. header("Content-type: application/octet-stream");
  16. header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
  17. header("Content-length: $fsize");
  18. header("Cache-control: private"); //use this to open files directly
  19. while(!feof($fd)) {
  20. $buffer = fread($fd, 2048);
  21. echo $buffer;
  22. }
  23. }
  24. fclose ($fd);
  25. }
  26. }
  27.  
  28.  
  29.  
  30.  
  31. // zapytanie pobierajace dane z bazy danych
  32. $zapytanie = mysql_query("SELECT id,opis,plik,rozmiar,ilosc_pobran FROM pliki") or die(mysql_error());
  33.  
  34. while ($row = mysql_fetch_array($zapytanie, MYSQL_ASSOC))
  35. {
  36.  
  37. // laczenie z baza danych
  38. require("pliki/laczenie.php");
  39. if (isset($_GET['plik']) && !empty($_GET['plik'])) {
  40. $sFileName = str_replace('..','.',$_GET['plik']);
  41. $sFolder = './';
  42.  
  43. if (file_exists($sFolder.$sFileName)) {
  44. $fullPath = $sFolder.$sFileName;
  45. if ($fd = fopen ($fullPath, "r")) {
  46. $fsize = filesize($fullPath);
  47. $path_parts = pathinfo($fullPath);
  48. $ext = strtolower($path_parts["extension"]);
  49. header("Content-type: application/octet-stream");
  50. header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
  51. header("Content-length: $fsize");
  52. header("Cache-control: private"); //use this to open files directly
  53. while(!feof($fd)) {
  54. $buffer = fread($fd, 2048);
  55. echo $buffer;
  56. }
  57. }
  58. fclose ($fd);
  59. }
  60. }
  61.  
  62. printf ("ID: %s<br/>
  63. Opis: %s<br/>
  64. Plik: %s<br/>
  65. Rozmiar: %s kb<br/>
  66. Ilość pobrań: %s
  67. <br/>
  68. <a href='pliki/listaplikow.php?$row[plik]'>pobierz</a>
  69. ", $row[id], $row[opis],$row[plik],$row[rozmiar],$row[ilosc_pobran]);
  70. echo '<hr/>';
  71. }
  72.  
  73. mysql_free_result($zapytanie);
  74.  
  75. // zamykanie polaczenie
  76.  
  77. ?>


help

Ten post edytował gigzorr 4.07.2010, 14:42:01
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 07:49