Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie plików, Pobieranie plików .exe, .rar, .zip.
WebSter
post 18.07.2004, 21:00:01
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 18.07.2004

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


Witam,

Jaki kod dać w nagłówkach header() pliku np. download.php, by można było pobierać pliki .exe, .zip, .rar po przez linki download.php?id=plik.exe (rar lub zip.) Zmieniałbym tylko końcówkę linku, na nazwę pliku który można pobrać.

Proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
marlowe
post 18.07.2004, 21:57:41
Post #2





Grupa: Zarejestrowani
Postów: 178
Pomógł: 0
Dołączył: 2.11.2003
Skąd: Kraków

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


  1. <?php
  2. header('Content-type: application/x-download');
  3. ?>

O to chodzi?
Ale przecież akurat linki do tych typów plików są chyba zawsze odczytywane jako aplikacji do pobrania...?
Pozdrawiam.
Bartek

Ten post edytował marlowe 18.07.2004, 21:58:06
Go to the top of the page
+Quote Post
WebSter
post 19.07.2004, 08:01:35
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 18.07.2004

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


A gdzie w tym kodzie mam definicję jaki dać id do pliku czyli download.php?id=plik.rar?
Go to the top of the page
+Quote Post
marlowe
post 19.07.2004, 08:21:09
Post #4





Grupa: Zarejestrowani
Postów: 178
Pomógł: 0
Dołączył: 2.11.2003
Skąd: Kraków

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


  1. <?php
  2. function getFileName($id)
  3. {
  4. if(!($fd = fopen(&#092;"pliki.txt\",\"r\"))){
  5.  return(&#092;"\");
  6. }
  7. while (!feof ($fd)){
  8.  $line = trim(fgets($fd));
  9.  if(($pos = strpos($line, &#092;" \")) === false)
  10. continue;
  11.  $str_id = substr($line, 0, $pos);
  12.  if($id == $str_id){
  13. return substr($line, $pos + 1, strlen($line));
  14.  }
  15. }
  16. return(&#092;"\");
  17. }
  18. function send($name)
  19. {
  20. if(!file_exists($name)){
  21.  echo('Nie ma takiego pliku na serwerze!');
  22.  return;
  23. }
  24.  
  25. if(($fileName = strrchr($name, &#092;"\")) == false){
  26.  echo('Nie ma takiego pliku na serwerze!');
  27.  return;
  28. }
  29. $fileName = substr($fileName, 1, strlen($fileName));
  30. $fd = fopen($name,&#092;"r\");
  31. $size = filesize($name);
  32. $contents = fread($fd, filesize($name));
  33.  
  34. fclose($fd);
  35.  
  36. header(&#092;"Content-Type: application/octet-stream\");
  37. header(&#092;"Content-Length: $size;\");
  38. header(&#092;"Content-Disposition: attachment; filename=$fileName\");
  39.  
  40. echo $contents;
  41. }
  42. if(isSet($_GET['id'])){
  43. $name = getFileName($_GET['id']);
  44. if($name == &#092;"\"){
  45.  echo('Nie ma takiego pliku na serwerze!');
  46. }
  47. else{
  48.  send($name);
  49. }
  50. }
  51. else{
  52. echo('Nie ma takiego pliku na serwerze!');
  53. }
  54. ?>

Musisz utworzyć plik pliki.txt o następującej budowie:
Kod
1.  ./sciezka/plik1.exe
2. plik2.rar
3. ./sciezka2/sciezka3/plik.zip
... etc.

Pozdrawiam.
Bartek
PS Forum zamieniło mi ! na &#33; - popraw to sobie.

Ten post edytował marlowe 19.07.2004, 08:22:11
Go to the top of the page
+Quote Post
-Guest-
post 20.07.2004, 17:15:44
Post #5





Goście







Cytat
Warning: Wrong parameter count for fgets() in /home/httpd.poludnie/webster/inne/php/pobierz.php on line 8

etc...


"Nie ma takiego pliku na serwerze!"

Testowane na FoxServ.

pliki.txt
Cytat
1. p.rar


pobierz.php
  1. <?php
  2. function getFileName($id)
  3. {
  4. if(!($fd = fopen(&#092;"plik.txt\",\"r\"))){
  5.  return(&#092;"\");
  6. }
  7. while (!feof ($fd)){
  8.  $line = trim(fgets($fd));
  9.  if(($pos = strpos($line, &#092;" \")) === false)
  10. continue;
  11.  $str_id = substr($line, 0, $pos);
  12.  if($id == $str_id){
  13. return substr($line, $pos + 1, strlen($line));
  14.  }
  15. }
  16. return(&#092;"\");
  17. }
  18. function send($name)
  19. {
  20. if(!file_exists($name)){
  21.  echo('Nie ma takiego pliku na serwerze!');
  22.  return;
  23. }
  24.  
  25. if(($fileName = strrchr($name, &#092;"\")) == false){
  26.  echo('Nie ma takiego pliku na serwerze!');
  27.  return;
  28. }
  29. $fileName = substr($fileName, 1, strlen($fileName));
  30. $fd = fopen($name,&#092;"r\");
  31. $size = filesize($name);
  32. $contents = fread($fd, filesize($name));
  33. fclose($fd);
  34.  
  35. header(&#092;"Content-Type: application/octet-stream\");
  36. header(&#092;"Content-Length: $size;\");
  37. header(&#092;"Content-Disposition: attachment; filename=$fileName\");
  38.  
  39. echo $contents;
  40. }
  41. if(isSet($_GET['id'])){
  42. $name = getFileName($_GET['id']);
  43. if($name == &#092;"\"){
  44.  echo('Nie ma takiego pliku na serwerze!');
  45. }
  46. else{
  47.  send($name);
  48. }
  49. }
  50. else{
  51. echo('Nie ma takiego pliku na serwerze!');
  52. }
  53. ?>
  54. <HTML>
  55. <HEAD>
  56. <META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=iso-8859-2\">
  57. <TITLE>x-download</TITLE>
  58. </HEAD>
  59. <BODY>
  60.  
  61. <A HREF=\"pobierz.php?id=p.rar\">Pobierz</A>
  62.  
  63. </BODY>
  64. </HTML>


Czekam na dalszą pomoc.

-----
Kod php umieszczamy w [php] nie [quote]
hwao
Go to the top of the page
+Quote Post
fiflus
post 21.07.2004, 23:11:01
Post #6





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 19.09.2003

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


Cytat(WebSter @ 2004-07-18 22:00:01)
Witam,

Jaki kod dać w nagłówkach header() pliku np. download.php, by można było pobierać pliki .exe, .zip, .rar po przez linki download.php?id=plik.exe (rar lub zip.) Zmieniałbym tylko końcówkę linku, na nazwę pliku który można pobrać.

Proszę o pomoc.

link: download.php?id=plik.exe

download.php :

  1. <?php
  2. $a = $_GET['id'];
  3. header (&#092;"Location: katalog_z_plikami/$a\");
  4. ?>


O to chodziło?


--------------------
Fajne to forum :)
Go to the top of the page
+Quote Post
-WebSter~-
post 8.08.2004, 08:52:14
Post #7





Goście







Nie działa powyższy kod, tj. po kliknięciu na link przekierowuje do katalogu z plikiem, a nie wywołuje go sad.gif.

Jeszcze jakieś pomysły?
Go to the top of the page
+Quote Post
-WebSter | IP: 177.97.185.3-
post 12.08.2004, 14:42:51
Post #8





Goście







Macie jeszcze jakieś pomysły? To bardzo ważne...
Go to the top of the page
+Quote Post
-Gość_WebSter-
post 12.08.2004, 14:47:35
Post #9





Goście







[quote=Guest,2004-07-20 16:15:44] [quote]

Warning: Wrong parameter count for fgets() in /home/httpd.poludnie/webster/inne/php/pobierz.php on line 8

etc...[/quote]

"Nie ma takiego pliku na serwerze!"

Testowane na FoxServ.

pliki.txt[quote]
1. p.rar[/quote]

pobierz.php
  1. <?php
  2. function getFileName($id)
  3. {
  4.   if(!($fd = fopen(&#092;"plik.txt\",\"r\"))){
  5.          return(&#092;"\");
  6.   }
  7.   while (!feof ($fd)){
  8.          $line = trim(fgets($fd));
  9.          if(($pos = strpos($line, &#092;" \")) === false)
  10.                 continue;
  11.          $str_id = substr($line, 0, $pos);
  12.          if($id == $str_id){
  13.                 return substr($line, $pos + 1, strlen($line));
  14.          }
  15.   }
  16.   return(&#092;"\");
  17. }
  18. function send($name)
  19. {
  20.   if(!file_exists($name)){
  21.          echo('Nie ma takiego pliku na serwerze!');
  22.          return;
  23.   }
  24.  
  25.   if(($fileName = strrchr($name, &#092;"\")) == false){
  26.          echo('Nie ma takiego pliku na serwerze!');
  27.          return;
  28.   }
  29.   $fileName = substr($fileName, 1, strlen($fileName));
  30.   $fd = fopen($name,&#092;"r\");
  31.   $size = filesize($name);
  32.   $contents = fread($fd, filesize($name));
  33.   fclose($fd);
  34.  
  35.   header(&#092;"Content-Type: application/octet-stream\");
  36.   header(&#092;"Content-Length: $size;\");
  37.   header(&#092;"Content-Disposition: attachment; filename=$fileName\");
  38.  
  39.   echo $contents;
  40. }
  41. if(isSet($_GET['id'])){
  42.   $name = getFileName($_GET['id']);
  43.   if($name == &#092;"\"){
  44.          echo('Nie ma takiego pliku na serwerze!');
  45.   }
  46.   else{
  47.          send($name);
  48.   }
  49. }
  50. else{
  51.   echo('Nie ma takiego pliku na serwerze!');
  52. }
  53. ?>
  54. <HTML>
  55. <HEAD>
  56. <META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=iso-8859-2\">
  57. <TITLE>x-download</TITLE>
  58. </HEAD>
  59. <BODY>
  60.  
  61. <A HREF=\"pobierz.php?id=p.rar\">Pobierz</A>
  62.  
  63. </BODY>
  64. </HTML>


Czekam na dalszą pomoc.

-----
Kod php umieszczamy w [php] nie [quote]
hwao
[/quote]
Moze w tym kodzie cos zle robie?
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: 14.08.2025 - 02:23