Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: download
Forum PHP.pl > Forum > Przedszkole
Kuternoga
Witam to mój pierwszy post na tym forum wiec witam wszystkich uzytkownikow serdecznie.
Problem mam tego typu ze mam do napisania download
w downloadzie tym nie uploaduje plikow na serwer gdzie znajduje sie skrypt do sciagania tylko gromadze w bazie url-e
Problem polega na tym ze przy kliknieciu na download chcialbym ukryc prawdziwa lokalizacje pliku
Chcialbym aby w polu pobierania pliku byla tylko nazwa pliku i nazwa serwera bez rzeczywistej lokacji na tym serwerze
Jak tego dokonac
Dodam ze nie znam sie na dokumentacji HTTP wiec nie wiem jaki naglowek wyslac
Prosze o pomoc i z gory dziekuje
Kinool
mozesz zrobic to tak ze sciezke i nazwe pliku zakodujesz np:

  1. <?php
  2.  
  3. $url = 'jakisplik.pdf';
  4.  
  5. $url = base64_encode($url); // zakodowanie nazwy pliku
  6. $url = urlencode($url); // sformatowanie poprawnie url-a
  7.  
  8. echo '<a href=\"download.php?id='.$url.'\">plik</a>';
  9.  
  10. // sprawdzasz np. czy istnije $_GET['id']
  11. //jak tak to trzeba spowrotem to odkodowac i przeslac (w odwrotnej kolejsnsci)
  12.  
  13. $_GET['id'] = urldecode($_GET['id']);
  14. $_GET['id'] = base64_decode($_GET['id']);
  15.  
  16. // teraz $_GET['id'] to poprawna sciezka z plikiem
  17. // no i teraz wyapadlo by zrobic naglowek HTTP i wyslac go do przegladarki
  18.  
  19. $size = filesize('server/'.$_GET['id']);
  20.  
  21.  
  22. header('Content-Type: application/octet-stream');
  23. header('Content-Length: '.$size);
  24. header('Content-Disposition: attachment; filename='.$_GET['id']);
  25. readfile('server/'.$_GET['id']);
  26. exit();
  27.  
  28. ?>


teraz pare wyjasnien skrypt w podobnej formie ostatnio napisalm i dziala OK smile.gif co do feadera to przydalo by sie jeszcze podawac MIME TYPE pliku, pare topikow temu byl muj post na ten temat

PS. bez headera raczej nie da rady tego zrobic tak by ktos nie znal sciezki
Kuternoga
Dobra, zakladam ze mam sciezke do pliku nie zajmujemy sie juz tablica get
czyli skrypt powinien wygladac tak(?):
  1. <?php
  2.  
  3. $url = 'jakisplik.pdf';
  4.  
  5. /*
  6. wstawianie tego byloby bez sensu bo w wyniku otrzymalbym infomacje poczatkowa->
  7. $url = base64_encode($url); 
  8. $url = urlencode($url); 
  9. $url = urldecode($url);
  10. $url = base64_decode($url);
  11. */
  12.  
  13. $size = filesize($url);
  14.  
  15.  
  16. header('Content-Type: application/octet-stream');
  17. header('Content-Length: '.$size);
  18. header('Content-Disposition: attachment; filename='.$url]);
  19. readfile($url]);
  20. exit();
  21.  
  22. ?>

Czy dobrze zrozumielem?
Wiec sprawa wyglada tak w linku mam zmienna view=downloadfile i zmienna file_id jako id urla w bazie wiec po zrealizowaniu skryptu mam gotowy url nie potrzebuje go ani kodowac ani dekodoac wystarczy ze powbiore filesize i podam naglowki.
Czy dobrze zrozumialem?


-----------------------------
edit
dlaczego funkcja filesize nie moge poprac rozmiaru pliku
probowalem tez przez
  1. <?php
  2. $fp = fsockopen($url,80);
  3. fseek($fp,SEEK_END);
  4. $filesize = ftell($fp);
  5. ?>

ale fsockopen nie moglo sie polaczyc z plikiem
moze podac mi jakis adres pliku na ktroym moglbym testowac?
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.