Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne]pobieranie plików
@rtur
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Chciałbym aby po kliknięciu w link otworzyły mi się do pobrania pliki:

http://adres.pl/pobierz-rozdzial/wersja/doc -> http://adres.pl/pliki/dokument.doc
http://adres.pl/pobierz-rozdzial/wersja/audio -> http://adres.pl/pliki/plik-audio.mp3
http://adres.pl/pobierz-rozdzial/wersja/zip -> http://adres.pl/pliki/archiwum.zip

W jaki sposób mogę to zrobić? pewnie bym sobie to wyszukał w google tylko nawet nie wiem jakiej frazy użyć aby to znaleźć (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Wazniak96
post
Post #2





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


  1. header("Content-type: application/octet-stream");
  2.  
  3. header("Content-Length: " . filesize('plik.doc'));
  4.  
  5. header('Content-Disposition: attachment; filename="plik.doc"');
  6.  
  7. readfile('plik.doc');
Go to the top of the page
+Quote Post
Turson
post
Post #3





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Dodatkowo htaccess żeby linki były ładne
Go to the top of the page
+Quote Post
@rtur
post
Post #4





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Dla 3 typów plików o takiej samej nazwie tylko innym rozszerzeniu tak jak niżej będzie dobrze, czy da się jeszcze prościej? linki na razie w formacie index.php?file=zip|rar|7z
  1. $getFile == $_GET['file'];
  2. if($getFile=='rar'){
  3. $attachmentFileLnk='rar';
  4. }
  5. if($getFile=='zip'){
  6. $attachmentFileLnk='zip';
  7. }
  8. if($getFile=='7z'){
  9. $attachmentFileLnk='7z';
  10. }
  11. $attachmentFile='plik.'.$attachmentFileLnk;
  12. if($getFile=='rar' || $getFile=='zip' || $getFile=='7z'){
  13. header("Content-type: application/octet-stream");
  14. header("Content-Length: " . filesize($attachmentFile));
  15. header('Content-Disposition: attachment; filename="'.$attachmentFile.'"');
  16. readfile($attachmentFile);
  17. }
Go to the top of the page
+Quote Post
com
post
Post #5





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


tak wrzucić sobie w array
  1. $array = array("rar", "zip", "7z");
  2.  
  3. if (in_array($_GET['file'], $array)) {
  4.  
  5. #whatever
  6. }

(IMG:style_emoticons/default/wink.gif)

Cytat
Kod
$getFile == $_GET['file'];
(IMG:style_emoticons/default/oneeyedsmiley02.png)

Ten post edytował com 29.10.2013, 22:56:48
Go to the top of the page
+Quote Post
@rtur
post
Post #6





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


okej też myślałem nad arrayem, ale nie wiem tylko to:
  1. if($getFile=='rar' || $getFile=='zip' || $getFile=='7z')
czy jeszcze jakoś z wszystkimi typami
  1. if($getFile=='7z'){
  2. $attachmentFileLnk='7z';}


Ten post edytował @rtur 29.10.2013, 23:01:15
Go to the top of the page
+Quote Post
com
post
Post #7





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


  1. $getFile == $_GET['file'];
  2. if($getFile=='rar'){
  3. $attachmentFileLnk='rar';
  4. }
  5. if($getFile=='zip'){
  6. $attachmentFileLnk='zip';
  7. }
  8. if($getFile=='7z'){
  9. $attachmentFileLnk='7z';
  10. }


to przecież nie ma sensu skoro to samo masz w $getFile, może powiedz mi co wgl zawiera $_GET['file'] (IMG:style_emoticons/default/questionmark.gif)

co do przykładu up nie zapomnij przefiltrować $_GET['file'] , ja tylko pokazałem idee (IMG:style_emoticons/default/biggrin.gif)

Ten post edytował com 29.10.2013, 23:19:24
Go to the top of the page
+Quote Post
@rtur
post
Post #8





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


To co pokazywałem było tylko przykładem, w $_GET['file'] i $attachmentFileLnk rzeczywiście było to samo zawsze, ale to tylko przykład, dobrze teraz wersja lekko zmodyfikowana, da radę to jeszcze uprościć, czy nie ma sensu?
  1. $array = array('notepad', 'word','excel');
  2. if($_GET['file']=='notepad'){
  3. $lnk='txt';
  4. }
  5. if($_GET['file']=='word'){
  6. $lnk='docx';
  7. }
  8. if($_GET['file']=='excel'){
  9. $lnk='xlsx';
  10. }
  11. $plik='plik.'.$lnk;
  12. if (in_array($_GET['file'], $array)) {
  13. header("Content-type: application/octet-stream");
  14. header("Content-Length: " . filesize($plik));
  15. header('Content-Disposition: attachment; filename="'.$plik.'"');
  16. readfile($plik);
Go to the top of the page
+Quote Post
Turson
post
Post #9





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Wygląda ok. Radziłbym umieścić kod w if(isset($_GET["file"]))

Cytat(com @ 29.10.2013, 23:16:47 ) *
co do przykładu up nie zapomnij przefiltrować $_GET['file']





@down
Szczerze mówiąc jak teraz patrzę to nie wiem po co (IMG:style_emoticons/default/tongue.gif)

Ten post edytował Turson 30.10.2013, 12:57:45
Go to the top of the page
+Quote Post
com
post
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Można jeszcze tak :
  1. if(isset($_GET['file']))
  2. {
  3. $array = array('txt'=>'notepad', 'docx'=>'word','xlsx'=>'excel');
  4. $key = array_search($_GET['file'], $array);
  5. $plik='plik.'.$key;
  6. if (in_array($_GET['file'], $array)) {
  7. header("Content-type: application/octet-stream");
  8. header("Content-Length: " . filesize($plik));
  9. header('Content-Disposition: attachment; filename="'.$plik.'"');
  10. readfile($plik);
  11. }
  12. }



Turson up chociażby po to żeby w łatwy sposób operować na tej kolekcji danych, wyobraź sobie że np mamy zamiast 3 typów 20, 50, 100 odpowiedź które rozwiązanie wybierzesz chyba nasuwa się sama... poza tym w przykładzie autora wykonuje 3 warunki za każdym razem, można by oczywiście dodać else, no ale skoro w prosty sposób z 16 linii można zrobić 8, to czasem warto się zastanowić, szczególnie jak się ma trochę więcej wiedzy niż przeciętny XY (IMG:style_emoticons/default/wink.gif)

Ten post edytował com 30.10.2013, 14:40:16
Go to the top of the page
+Quote Post
Turson
post
Post #11





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Cytat(com @ 30.10.2013, 14:38:06 ) *
Turson up chociażby po to żeby w łatwy sposób operować na tej kolekcji danych, wyobraź sobie że np mamy zamiast 3 typów 20, 50, 100 odpowiedź które rozwiązanie wybierzesz chyba nasuwa się sama... poza tym w przykładzie autora wykonuje 3 warunki za każdym razem, można by oczywiście dodać else, no ale skoro w prosty sposób z 16 linii można zrobić 8, to czasem warto się zastanowić, szczególnie jak się ma trochę więcej wiedzy niż przeciętny XY (IMG:style_emoticons/default/wink.gif)

Miałem na myśli to po co cytowałem Twoją wypowiedź (odniosłem się do edycji Twojego posta), a nie odnosiłem się do kodu (IMG:style_emoticons/default/biggrin.gif)

Wszystko jasne, nie ma po co offtopować (IMG:style_emoticons/default/smile.gif)

Ten post edytował Turson 30.10.2013, 15:42:44
Go to the top of the page
+Quote Post
@rtur
post
Post #12





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Dziękuję wszystkim za pomoc działa jak chciałem (IMG:style_emoticons/default/smile.gif)
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: 4.10.2025 - 04:45