Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]zamiast okienka pobieraniania czyta plik odrazu
Forum PHP.pl > Forum > Przedszkole
gigzorr
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. ?>
Fifi209
i tak już chyba zostanie - to wina samej przeglądarki.
Nh2003
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...
Fifi209
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
gigzorr
  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
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.