Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> download, pokazywanie tylko adresu serwera i nazwy
Kuternoga
post 10.09.2004, 10:55:44
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 9.07.2004
Skąd: Łódź

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


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
Go to the top of the page
+Quote Post
Kinool
post 10.09.2004, 11:19:00
Post #2





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


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


--------------------
Go to the top of the page
+Quote Post
Kuternoga
post 10.09.2004, 11:50:03
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 9.07.2004
Skąd: Łódź

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


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?

Ten post edytował Kuternoga 10.09.2004, 14:16:52
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: 27.04.2024 - 19:56